最近這段時間堅持了vim的使用,我在我的IDEA里面加了一個插件,可以支持vim。
然后不管是IDEA還是Vim都有自己的按鍵,而且都很好用,所以我就總結下在IDEA下的vim使用命令
當然,都是原生命令,我總結的是我自己經常用到的,我也是剛開始使用,還不太熟練。
記載在博客以后就不用去搜索去查了。
所以本文不是vim命令教學,而是介紹IDEA和VIM的混用。
本文關於Vim的幾個模式就不介紹了,如果有讀者想借鑒我的習慣,肯定是有vim基礎的。
我所介紹的都是根據我實際情況所需要用的,不會介紹完全部。
1. 常用的插入命令

其實這幾個都不是必須的,但也是要會用的,因為你大可以在正常情況下移動到想要編輯的地方,然后再打開VIM編輯器。
像在光標下插入新行,你用IDEA的shift+Enter也可以,所以我想說的是IDEA和VIM的東西你可以混着用,對自己效率有提升就可以了
2. 常用的定位命令
- 設置行號開啟,不過在IDEA里面肯定是開有行號的,所以也不必用vim來控制
:set nu
//取消行號
:set nonu
行的移動,關於行的移動還是會用到,一般像移動到第n行,或者視圖選擇時想做全選操作
- 移動到第一行
gg
- 移動到最后一行
G
- 移動到n行
nG
- 移動到行首
0
//其實你也可以用Home鍵 所以說我買的鍵盤至少是87鍵的,不是說非要什么都用vim的命令,只要能達到目的都ok - 移動到行尾
$
單詞的移動,單詞的移動也用的比較多
- 移動到下一個單詞的開頭,比如 i love you,它會移動到i l y這幾個字母上
w
- 移動到上一個單詞的開頭,比如 i love you,它會移動到y l i這幾個字母上
b
- 移動到下一個單詞的結尾,比如 i love you,它會移動到i e u這幾個字母上
e
在一行代碼里,可以定位到某個字母,比如

上面的代碼里,光標在行首,我想定位到node那個單詞,我可以按兩下w,也可以輸入2w,這兩者的意思都是一樣的
但是,還有一種方法,就是直接定位到某個字母上,那就是
f字母 //比如在上面的例子中,我想移動到n,所以就輸入 fn

- 移動匹配括號
//你先把光標移動到括號上 % //然后按住%就可以匹配到對應的另一半
3.常用的剪切粘貼復制命令
在這里你也是可以混着用,比如刪除一行代碼,你可以用IDEA的快捷鍵也可以用vim的dd,都可以,看你用哪個爽罷了
- 復制一行代碼
yy
- 復制n行代碼,在vim里有個比較有趣的設定是你想一個操作執行多少遍,可以在操作命令前加上數字,比如3yy,就是復制3行代碼
nyy
同理,你也可以粘貼5次,命令就是5p
有時復制多行時,由於行數相差大,不容易算出來要復制多少行,這時就用視圖來幫忙,比如下邊的示例
先輸入命令 v ,代表開啟可以視模式選擇
然后再輸入 272G 代表定位到272行

然后再輸入y,就可以快速的復制多行了。這可比你算出272-251+1快多了吧。
- 復制多行還有一個也比較有趣的用法,比如我要將5到13行的代碼復制到58行下方
:5,13 copy 58
//或者也可以復制單行,這樣的寫法前提都是光標不移動的,更方便
:5 copy 58 - 復制多行(只復制) 其它命令可參考這種格式
:24,36 y //復制24到36行而不做其它事 同理刪除剪切可以是:24,36 d
- 刪除命令
//刪除一行,雖然看起來是刪除,但其實說是剪切更准確,因為你輸入p就會把它粘貼出來了 dd //刪除n行,同理也可以參考多行復制一樣實現大范圍刪除 ndd
//刪除第n行 :nd
4. 替換和查找
這里介紹一個命令:c命令,c的作用可以理解為:刪除->剪切->進入插入模式
所以我經常用到c命令的組合是 cw 或者 ce,顧名思義,就是刪除了一個單詞然后准備寫一個新的單詞,比如

這里我想把node換成別的,輸入cw

這樣就進入插入模式,就可以輸入新的單詞了

還有一種情況是,當一串字符串,你想修改中間部分時,cw行不通,這時可以利用前面學的f命令來組合,比如

我已經移動到l字母,如果我輸入cw,它會直接把loveyou都刪掉,而我只是想改掉love這個單詞,可以輸入cfe

這時就會把love刪除並進入插入模式了。從這里可以看出vim的命令組合真的很強大,想要熟練就要多使用。
- 查找命令 ,你可以用IDEA的查找,也可以用vim的查找,都隨便的
/查找內容 //然后輸入n就代表跳轉到下一個匹配的內容,輸入N跳轉到上一個匹配的內容
- 替換
:{作用范圍}s/{目標}/{替換}/{替換標志} //例如:%s/love/hate/g會在全局范圍(%)查找love並替換為hate,所有出現都會被替換(g)。作用范圍分為 當前行 , 全文 , 選區 三個范圍
當前行 :s/love/hate/g 全文 :%s/ove/hate/g 選區 在Visual模式下選擇好區域后,輸入 : ,vim就會自動補全為 :'<,'> :'<,>'s/love/hate/g
也可以指定行范圍,比如4到80行
:4,80s/love/hate/g或者在當前行以及接下來的5行
:.,+5s/love/hate/g
甚至能根據需求尋找解決方案,比如我寫markdown時需要給選擇題的選項后面都加上兩個空格以便換行
//光標在A選項的行
:.,+3s/$/空格空格
//上面的$代表末尾,然后后一個/的內容代表插入的內容
//由此可以得知,將$換成^就是在開頭插入內容了不過說實話,一般用得多的是 當前行 全文 指定行范圍 這三種,因為這三種已經可以滿足其余幾種方式了
至於命令最后面的/g的意思是替換標志,g代表全局(global)其余替換標識 i表示大小寫不敏感查找,I表示大小寫敏感 c表示需要確認
當你替換標志包含c時,每匹配一次單詞,都會彈出replace with 所更改的單詞 (y/n/a/q/l/^E/^Y)?
按下y表示替換,n表示不替換,a表示替換所有,q表示退出查找模式,l表示替換當前位置並退出。^E與^Y是光標移動快捷鍵
所以你可以輸入:4,80s/love/hate/gci
這句命令的意思是,在4到80行內,不分大小寫的查找love這個單詞,並每次找到后,讓你輸入確認命令以便於替不替換成hate這個單詞
5. 其它一些用到的命令
- 撤銷(undo)
u
- 防撤銷,總之就是把撤銷的東西再放回去(redo)
ctrl+r
- 列操作,列操作在IDEA中也有,不過區別是IDEA的列操作主要是操作相同單詞的列,而vim的列操作是操作范圍內的所有列,比如
IDEA的列操作,操作的是同一個部分

vim的列操作,是你選中的區域內都會被更改

所以兩者用哪一個取決於你的需求了
//vim的列操作 1.光標定位到你想要操作的地方。 2.CTRL+v 進入Visual模式,選取操作范圍 3.SHIFT+i(I) 輸入要插入的內容。 4.ESC 按兩次,會在你選中的操作范圍內出現你插入的內容
- 打開歷史文件
在idea里面的話,打開歷史文件可以不用vim的功能。
但是我用gvim有時編輯了文件,想重新編輯,還得重新去找,用這個歷史文件的功能就好多了
ctrl+o
目前我常用的vim命令就是以上的命令,這只是vim的冰山一角,然而卻能讓我脫離鼠標好多了,
所以可見vim的強大,當然,vim很強大,IDEA也很強大,所以兩者結合就更強大了。
我也正在堅持使用vim,掌握百分百的vim命令是不可能的,vim的使用方式實在是太多了,
但是僅僅是我上面寫的那幾點命令就已經夠用好多了,我也將會不斷的學習更高級的vim操作,
總之就是要變成一個vim黨,沖鴨!鼠標什么的扔掉好吧哈哈哈哈
