VSCode Vim進(jìn)階操作

kbt
-----------updated 2019-1-30------------

近期筆者發(fā)現(xiàn)VSCode在vim 模式下CPU占用經(jīng)常是200%左右,卡頓非常嚴(yán)重,看了官方issue。
關(guān)閉easymotion 和 statusbarcolorcontrol 可以解決此問題。

  "vim.easymotion": false,
  "vim.statusBarColorControl": false

繼上篇魚和熊掌:VSCode+Vim 介紹VSCode Vim使用后差不多有一個月了。陸續(xù)遇到了一些操作上的問題,經(jīng)過不斷改進(jìn),碼字效率得到了一點(diǎn)點(diǎn)的提升。vim是個強(qiáng)大的工具,但同時也引入了不少概念和快捷鍵需要記,好記性不如爛筆頭,整理了這些提高效率的操作以備后續(xù)查看。

什么是 text object?


vim 之所以高效一個原因是對文本進(jìn)行了抽象,如一個單詞 一個句子 一個段落,就是文本對象(text-objects )。配合 d(delete) c(change) 可以一次性操作不同大小的文本對象,如 ‘dap’ 可以刪除一個函數(shù)所有內(nèi)容, daw 刪除光標(biāo)所在的單詞及周圍的空格。

另外vim還提供了文本對象操作的范圍關(guān)鍵字 a 和 i。
iw: inner word 光標(biāo)在單詞里面任何位置操作單詞,如 diw 可以刪除光標(biāo)所在的單詞,比dw方便很多。
aw: around word, 它會選中當(dāng)前單詞,同時包含當(dāng)前單詞之后的空格。比如 diw 可以刪除當(dāng)前單詞。

快速移動


寫代碼,除了輸入字符之外最常用的操作就是移動光標(biāo)。vim除了hjkl ctrl+u ctr+f外還有更快捷的移動方式,這里介紹2個插件都是vscode自帶的。
1.vim-easymotion
設(shè)置"vim.easymotion": true 開啟這個模式。
<leader><leader> t/T <char> 能夠向前/向后快速到達(dá)可見范圍內(nèi)的某字符(<char>)的位置。
<leader><leader> w/b 向前/向后到達(dá)可見范圍內(nèi)任何單詞的開頭。
<leader><leader> e/ge 向前/向后到達(dá)可見范圍內(nèi)任何單詞的結(jié)尾。
<leader><leader> k/j 向前/向后到達(dá)可見范圍內(nèi)任何行的行首。

2.vim-sneak
sneak模式下鍵入s后,再輸入2個字符就可以跳轉(zhuǎn)到目標(biāo)位置。
s<char><char> 往前跳轉(zhuǎn)到目標(biāo)位置。
S<char><char> 往后跳轉(zhuǎn)到目標(biāo)位置。

vim-surround


vim-surround 處理環(huán)繞文本操作,如引號 ” 括號()方括號[] 花括號{} xml html標(biāo)簽等。

命令 說明
d s <existing char> 刪除兩邊的指定字符
c s <existing char> <desired char> 修改兩邊的指定字符
y s <motion> <desired char> 修改兩邊字符
S <desired char> visual modes 選中指定字符中間的內(nèi)容

例子:

  • "test" 輸入 cs"'修改為 'test'
  • "test" 輸入ds" 修改為 test
  • "test" 輸入 cs"t and enter 123>修改為<123>test</123>
  • test 輸入 ysaw) 修改為 (test)

代碼注釋


代碼注釋vsc使用了類似vim-commentary的操作。
使用方法:

  • gc - 打開或關(guān)閉注釋. 輸入 gcc 打開或關(guān)閉某一行代碼注釋, gc2j 打開或關(guān)閉兩行代碼注釋。
  • gC - 塊代碼注釋.輸入 gCi) 注釋 括號()中的代碼。

中文輸入法切換問題


vim 常用是normal 和 insert 模式。 大部分時候都在兩個模式下來回切換,如果在insert 模式下是中文輸入,按esc 或者 ctrl+[ 切到了 normal 模式,這個時候問題來了,需要手動切換輸入法到英文,否則會彈出中文提示。
還好官方給出了解決方案:

  1. 安裝 im-select: Switch your input method from terminal

  2. 修改配置

"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}"

需要注意的是,mac下需要查明模式英文輸入法是US 還是British ,然后修改defaultIM這個設(shè)置,否則會不起作用。

VSCodeVim 實(shí)用技巧


gd - Go to definition, 跳轉(zhuǎn)到定義。
gb - 找出與光標(biāo)下相同的下一個單詞, 并添加一個光標(biāo) ,接下來就可以同時修改。
af - VISUAL 模式命令, 依據(jù)語法分析, 將選擇區(qū)域向外擴(kuò)展。
gh - 等同于將鼠標(biāo)移至光標(biāo)所在單詞, 方便查看定義以及報錯。

參考


https://github.com/VSCodeVim/Vim

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容