VSCode 幫助貧困的烏干達兒童

最近把開發環境從 WebStorm 遷移到了世界上最好的編輯器 VSCode,由於須要常常開啓多個項目,CPU 和內存都爆了只能棄坑。使用過一段時間 vsc 發現裏面自帶插件庫有個叫作 vscodevim 的插件特別有意思。它使用了一些詭異的鍵位和模式,和普通編輯體驗差異很大,可是一看評價這麼高,下載量這麼大,我一度懷疑本身。看來你們都很承認這個插件,堅持使用了一段時間,發現這些詭異的鍵位用起來是真的特別爽,顛覆了我對文本編輯體驗的認知。接下來我要開始安利了!git

模式

要學會使用 vim 首先要弄清楚它和其餘編輯器最大的區別之一就是它擁有多個模式,而其餘大部分編輯器就只有編輯模式,直接就能插入修改刪除,做爲一篇安利入門性質文章,咱們須要知道 vim 中最重要的四種模式。github

  • normal<esc>:能夠簡單的理解爲瀏覽模式,默認就是 normal,在這種狀態下你能夠移動光標,跳轉翻頁,也能夠作一些其餘如刪除等操做,在插入模式下按 esc 回到 normal 模式。
  • insert<i>:就是經常使用編輯器的編輯態,符合咱們常規的使用方式,在 normal 下按 i 鍵進入插入模式。
  • command<:>: 在 normal 模式下按冒號進入命令模式,好比 :wq 退出 vim。
  • visual<v>:和 normal 相似可是命令會高亮選中區域,相似普通編輯器選中了一段文本。

vim 不止這四種模式,可是這幾種是比較經常使用到的,更多模式能夠看 vim 文檔。json

Text Object

vim 對文本進行了抽象,句子由單詞組成,段落由句子組成,文章由段落組成,如一個單詞就是一個 text-object,它配合 operator 能夠進行一些很是高效的操做。常見文本對象的類型:vim

  • iw - inner word
  • aw - a word
  • is - inner sentence
  • as - a sentence
  • ip - inner paragraph
  • ap - a paragraph

若是結合下面要提到的 operator 就能夠組合成一個指令如:daw(delete a word) 便可刪除當前光標下的單詞。bash

Motion

vim 中使用一些 motion 能夠快速的來移動光標,如:app

  • w: 到下一個單詞
  • b: 上一個單詞
  • h: 光標向左
  • l: 光標向右
  • j: 光標向下
  • k: 光標向上
  • G: 文本末尾行
  • gg: 文本開始行
  • zz: 屏幕中間
  • %: 匹配一對符號的另外一端
  • ^: 行首
  • &dollar;: 行尾

Operator

一個 vim 命令能夠由 operator、number、motion 組成,咱們先看 operator,它指的是一些操做如:編輯器

  • d: 刪除
  • dd: 刪除當前行
  • c: 刪除並進入插入模式
  • y: 複製
  • p: 粘貼
  • s: 刪除並進入插入模式
  • x: 刪除
  • o: 向下插入一新行
  • O: 向上插入一新行
  • >: 向右縮進
  • <: 向左縮進
  • u: 撤銷上次操做
  • .: 重複上次操做,這個頗有用

如今結合 operator / motion / number:函數

  • 2dd: 執行 2 次 dd 即爲向下刪除 2 行
  • daw: 刪除當前單詞
  • 2daw: 刪除 2 個單詞,包含單詞旁邊的空格,a 能夠理解爲 around
  • 2diw: 刪除 2 個單詞,不刪掉旁邊空格
  • c&dollar;: 刪除當前光標到當前行末尾的字符
  • dG: 從當前行刪除至文本末尾
  • 2yy: 向下複製 2 行
  • 2p: 粘貼 2 次複製的內容

Surround

在 vim 中有一個逆天的插件 vim-surround 如今 vscodevim 中集成了它。它能夠很方便的來處理環繞文本,在代碼中總會有一些 (){}[]<>''"" 符號,這個插件能很方便的處理它們。在 normal 模式下:spa

# cs"' 將雙引號變成單引號
"hello world" -> 'hello world'

# cs"<p> 把雙引號變成 p 標籤
"hello world" -> <p>hello world</p>

# ds" 刪掉兩側雙引號
"hello world" -> hello world

# ysaw' 給 hello 加上單引號
"hello world" -> "'hello' world"

更多使用能夠查看 https://github.com/tpope/vim-...插件

附上一張 vim 鍵位圖,vim 開始適應須要一段時間,當造成肌肉記憶了用起來就很爽了。

輸入法切換問題

VSCode 若是在 vi 的 insert 模式下使用了中文輸入法,當回到 normal 模式的時候將會仍是中文輸入法,而後你使用 JKLH 的時候出現一堆拼音這樣顯然是很噁心的,被迫還要手動切回英文輸入法,這裏 VSCodeVim 其實已經提供解決方案那就是在切回 normal 模式的時候自動去切換輸入法。詳細能夠看 https://github.com/VSCodeVim/...

解決方案就是首先咱們安裝 im-select 這個 CLI,而後在 VSCode 添加如下設置:

{
  "vim.autoSwitchInputMethod.enable": true,
  "vim.autoSwitchInputMethod.defaultIM": "com.apple.keylayout.US",
  "vim.autoSwitchInputMethod.obtainIMCmd": "/usr/local/bin/im-select",
  "vim.autoSwitchInputMethod.switchIMCmd": "/usr/local/bin/im-select {im}"
}

你的默認輸入法不必定是 com.apple.keylayout.US 可使用上面的 im-select 進行獲取,而後替換成你想要設置的 defaultIM。以上是 macOS 的設置,其餘平臺能夠參考上面 VSCodeVim 的官方文檔。這樣每次回到 normal 模式咱們就會自動切回英文輸入法。

快捷鍵

VSCode 自帶了一些快捷鍵也是很好用的。

做用 快捷鍵
符號重命名,重命名變量頗有用,文件中所有自動替換 F2
從新打開被關閉的編輯頁面 cmd+ shift + t
打開 terminal ctrl + `
刪除前一個單詞(在 vsc 其餘地方也是能用的) option + delete
上下移動選中行 option + 上下箭頭
多行編輯 按住 option 單擊須要編輯的位置
切換 Tab 組 ctrl + cmd + 左右箭頭
搜索符號 cmd + t
搜索文件 cmd + p
搜索命令 cmd + shift + p
切換左側面板 cmd + b
打開文件管理 cmd + shift + e
文件搜索面板 cmd + shift + f
擴展搜索面板 cmd + shift + x
在當前位置展現光標所在處變量、函數定義 cmd + 鼠標移動到光標處
跳轉到定義處 F12
複製當前打開文件的存放路徑 cmd + k + p
新建文件 cmd + n
打開新的 vsc 實例 cmd + shift + n
原文地址 https://github.com/Jiavan/blo...
相關文章
相關標籤/搜索