VS Code 中的 Vim 操作
本文轉(zhuǎn)載自微信公眾號「Piper蛋窩」,作者Piper蛋。轉(zhuǎn)載本文請聯(lián)系Piper蛋窩公眾號。
盡管 VS Code 自帶的快捷鍵已經(jīng)足夠強大 ,但存在一個問題:使用方向鍵是一個有些“反人類”的行為,雙手放在鍵盤上,如果只敲擊字母,那么便無需移動手腕;如果需要去敲擊方向鍵,則需要移動手腕或者小臂。Vim插件讓絕大部分敲擊集中在字母的區(qū)域,讓操作更加快捷、舒適。本文我將推薦我常用的Vim操作。
目錄
- Vim 插件安裝
- Vim 基礎(chǔ)
- VS Code 中常用 Vim 組合邏輯
Vim 插件安裝
下載 Vim 插件
如上圖,下載 Vim 插件。這里需要注意,強烈推薦 不使用Vim自帶的組合快捷鍵 Ctrl ,因為其會覆蓋掉 VS Code 本身的快捷鍵以及其他插件的快捷鍵 。
取消勾選 useCtrlKeys 設(shè)置
如上圖,可以在 Settings 中搜索 useCtrlKeys 配置,并取消勾選。

vim scroll
值得注意的是,我們依然可以使用 Ctrl + u 和 Ctrl + d 實現(xiàn)上下滾動頁面,滾動行數(shù)默認為半頁大小。
Vim 基礎(chǔ)
這里要介紹的是 Vim 基礎(chǔ)中的基礎(chǔ),但還是沒有 Vim 基礎(chǔ)的初學(xué)者也可以去 B 站搜索 Vim 相關(guān)的教程再鞏固一下(我之后也可能錄視頻)。
vim 基礎(chǔ)
如上圖:
- Vim 中默認是 normal 模式,此時敲擊字母是在敲擊命令,而非編輯文本;輸入 i 進入 insert 模式,此時敲擊字母才是輸入字母
- nsert 模式下,退出鍵 Escape 回到 normal 模式
- normal 模式下,hjkl分別是左下上右
vim 中 a i o 操作
如上:
- normal 模式下,Shift + a(以后記作A)移到行末,并轉(zhuǎn)為 insert 模式;I是行前
- normal 模式下,o是下插一行,并跳轉(zhuǎn)
vim 中 w b 操作
如上:
- normal 模式下,w是向前移動一個單詞,b則是向后移動一個單詞
vim 中的復(fù)制粘貼
如上:
- normal 模式下,d是開啟剪切模式,因此,dw則是剪切一個單詞;dd是剪切一行
- normal 模式下,y則是復(fù)制,而p是粘貼
vim 中 s x
如上:
- normal 模式下,s是刪除當(dāng)前光標(biāo)所指并轉(zhuǎn)為 insert 模式,x是刪除并且不轉(zhuǎn)換
vim 中 g
如上:
- normal 模式下,15gg是跳轉(zhuǎn)到15行
vim 中的 visual
如上:
- normal 模式下,是開啟選中 visual 模式
VS Code 中常用 Vim 組合邏輯
Vim 愛好者常說:Vim是一種邏輯,而非死記硬背快捷鍵(我還算不上 Vim 愛好者,這句話不是我說的,是 Linux 社區(qū)的一些朋友們說的)。
我對于 Vim 『邏輯』的理解,大概如下:
- 大小寫是一種相反的邏輯
- VS Code 中一些 Ctrl 與滾動
- (意味著在括號里
展開的解釋如下文。
大小寫是一種相反的邏輯
- int foo_xyz = 1;
我們知道,當(dāng)光標(biāo)在_處時,想要刪除 _xyz ,那么就要首先 找到最近的z的位置,然后刪除這個區(qū)間內(nèi)的東西。 在 vim 中,則是輸入 dfz 來表達, fz 則是 找到 z 的意思 。
vim 中 f 與 F
那么,向前查找是什么呢?答案是大寫的 F ,具體例子如上圖。
vim 中 o 與 O
如上,用 o 可以很輕松地向下插入一行,而用 O 則是向上插入一行。
VS Code 中一些 Ctrl 與滾動
vim 中的 []
如上,使用 Shift + [] 是以「代碼塊」為單位跳行。
vim 中 Ctrl + []
如上,Ctrl + [] 實現(xiàn)縮進的調(diào)整。這里結(jié)合了 visual 模式。
vim 中滾動
如上,[[ 跳到文件首行,而 ]] 則是行末。
vim 中 H L M z
如上,H 是到屏幕的頂部,L 是屏幕的底部,M 是屏幕的中央;而 zz 是『將光標(biāo)放到屏幕中央,且不移動光標(biāo)的位置(滾動屏幕)』,zt 是將光標(biāo)放到頂部,zb 是底部。
i( 意味著在括號里
- print(f"what {s}?")
如上,當(dāng)我們想清空 print() 函數(shù)括號內(nèi)的東西,我們「有邏輯地」告訴 vim 即可。把光標(biāo)移到括號內(nèi),輸入 ci( 或 ci),其中 i( 是『在括號內(nèi)』。
一種邏輯
如上,不僅是 c 操作,也不僅僅是 () ,對于 ""、[] 等都適用。
此外,還有很多邏輯可以組合,比如:j是向下跳轉(zhuǎn)一行,那么 10j 就是向下10行。 此外,/ 查找功能在 vs code 中同樣適用。但是,我更喜歡 vs code 自帶的 ctrl + f 查找, vs code 自帶的組合鍵還有哪些妙用呢?我們下回分解。
此外,推薦給大家推薦一本 vs code 的黑寶書,雖然我一般不建議購買「軟件類的工具書」,但是這本書還涵蓋了 vs code 的社區(qū)、歷史,由微軟的工程師韓老師撰寫。因為我是 vs code 社區(qū)中比較積極的志愿者,所以有幸得到了本書的簽名款。非常全面,vs code 只有你想不到,沒有做不到(做不到去 github 上提 issue 呀,馬上就可以做到了),讀下來還是非常不錯的。我這里提供一個鏈接,希望大家理性消費(畢竟挺厚的)。