vim是一款強大的編輯器,作過Linux c開發的同窗應該很是熟悉,java相關的開發人員在Linux修改部署的配置文件等也是常常會使用到vim,本文將vim中經常使用操做進行整理,供你們參考使用.java
進入vim
1.Linux命令行/git bash命令行等終端類工具可直接輸入vi filename
回車進入:
git
2.安裝IdeaVim插件後的IDEA編輯區即進入vim操做區.shell
vim三種模式
輸入模式(insert mode)
在輸入模式下,用戶可輸入文本數據
- 在指令模式下,輸入指令(`a、i、o、s`等)進入輸入模式
指令模式(command mode)
在指令模式下,可進行刪除、修改等各類編輯動做.
- 在輸入模式&末行模式下,按esc鍵進入指令模式.
末行模式(Last Line Mode)
在末行模式主要進行一些文字編輯輔助功能,好比字串搜索、替代、保存文件等操做
- 在末行模式,按esc進入指令模式
指令模式下經常使用指令
進入輸入模式
重要度 |
指令集 |
功能 |
*** |
a |
在當前遊標以後輸入 |
* |
A |
在當前行之末輸入 |
*** |
i |
在當前遊標以前輸入 |
* |
I |
在當前行之首輸入 |
*** |
o |
在當前行之下新增一行,並在新增行輸入 |
* |
O |
在當前行之上新增一行,並在新增行輸入 |
輸入結束後,按Esc鍵退出輸入模式
遊標移動
重要度 |
指令集 |
功能 |
*** |
h |
向左移動一個字元 |
*** |
l |
向右移動一個字元 |
*** |
j |
向下移動一個字元 |
*** |
k |
向上移動一個字元 |
* |
b |
左移一個單詞,至詞首 |
* |
w |
右移一個單詞,至詞尾 |
* |
0 |
移到當前行行首 |
* |
$ |
移到當前行行尾 |
|
+ |
移至下一行的行首 |
|
- |
移至下一行的行首 |
|
H |
移至視窗的第一行 |
|
M |
移至視窗的中間一行 |
|
L |
移至視窗的最後一行 |
|
G |
移至該文件的最後一行 |
|
nG |
移至該文檔的第n行 |
|
n+ |
下移n行 |
|
n- |
上移n行 |
|
gg |
回到開頭 |
|
Shift+g |
回到結尾 |
視窗移動
重要度 |
指令集 |
功能 |
*** |
Ctrl + f |
視窗下卷一頁 |
*** |
Ctrl + b |
視窗上卷一頁 |
|
Ctrl + d |
視窗下卷半頁 |
|
Ctrl + u |
視窗上卷半頁 |
* |
Ctrl + e |
視窗下卷一行 |
* |
Ctrl + y |
視窗上卷一行 |
刪除操做
重要度 |
指令集 |
功能 |
*** |
x |
刪除遊標所在字元 |
|
X |
刪除遊標前一字元 |
* |
dw |
從遊標當前位置開始向後刪除一個單詞 |
|
db |
從遊標當前位置開始向前刪除一個單詞 |
* |
d0 |
從行首刪除至當前遊標位置 |
* |
d$ |
從遊標當前位置刪除至行尾 |
*** |
dd |
刪除遊標所在行 |
|
D |
同d$ |
修改操做
重要度 |
指令集 |
功能 |
*** |
s |
修改遊標所在字元,修改完成後按Esc鍵結束 |
|
S |
修改整行內容,修改完成後按Esc鍵結束 |
* |
r |
替換當前遊標所在字元 |
* |
R |
進入替換狀態,直至按Esc鍵結束 |
* |
cw |
修改一個單詞(從遊標位置至詞尾) |
|
cb |
修改一個單詞(從詞首至遊標位置) |
* |
cc |
修改整行內容,完成後按Esc鍵結束,同S |
* |
c0 |
修改行首至遊標位置的內容 |
* |
c$ |
修改遊標位置至行尾的內容 |
* |
~ |
遊標所在字元大小寫切換 |
指令重複
在指令模式中,可在指令前面加入一個數字n,則該指令會重複執行n次
重要度 |
指令集 |
功能 |
*** |
nx |
刪除n個字元 |
*** |
ndd |
刪除n行 |
*** |
ns |
修改n個字元 |
取消/重複前一動做(Undo/Redo)
重要度 |
指令集 |
功能 |
*** |
u |
撤消上一指令的結果 |
*** |
. |
重複上一條指令 |
查找字符串
重要度 |
指令集 |
功能 |
*** |
/字符串 |
從當前遊標向後查找該字符串 |
*** |
?字符串 |
從當前遊標向前查找該字符串 |
*** |
n |
從當前遊標向後查找下一個字符串 |
*** |
N |
從當前遊標向前查找下一個字符串 |
查看編輯狀況
重要度 |
指令集 |
功能 |
*** |
Ctrl + g |
顯示正在編輯的文件名、當前遊標所在行數、文件總行數、文件是否被修改 |
括號匹配
重要度 |
指令集 |
功能 |
*** |
% |
定位到匹配的「(」、「)」、「{」、「}」 |
末行模式下經常使用操做
保存與退出
重要度 |
指令集 |
功能 |
*** |
:w |
保存,但不退出 |
*** |
:wq |
保存並退出 |
*** |
:x |
同:wq |
*** |
:q |
退出,若是當前文件沒有保存,禁止退出 |
*** |
:q! |
不保存退出 |
*** |
:w file.txt |
將內容保存至文件file.txt中,注意:此時編輯的仍爲原文件 |
* |
w! file.txt |
將內容強制保存至文件file.txt中,如文件file.txt存在:w file.txt將禁止執行 |
環境設置
重要度 |
指令集 |
功能 |
* |
:set |
顯示已設置的環境情況 |
* |
:set all |
顯示全部的環境設置選項 |
* |
:set nu |
顯示行號 |
* |
:set nonu |
不顯示行號 |
* |
:set ts=n |
設置Tab鍵的長度爲n |
執行命令
如下用具體的數字爲例進行介紹,數字表示行數,遊標所在行可用「.」代替,文件最後一行可用「$」代替vim
重要度 |
指令集 |
功能 |
* |
:10,20d |
刪除第10行至第20行的內容 |
* |
:10d |
刪除第10行的內容 |
* |
:%d |
刪除所有內容 |
*** |
:10,20co30 |
將第10行至第20行的內容複製到第30行以後 |
* |
:10,20mo30 |
將第10行至第20行的內容移動到第30行以後 |
*** |
:1,$s/old/new |
將第1行至最後一行中的old替換成new |
*** |
:1,$s/^/new |
將第1行至最後一行的內容前面插入new |
* |
:10 |
將遊標移至第10行 |
切換到shell狀態
重要度 |
指令集 |
功能 |
*** |
:sh |
切換到shell狀態,shell命令行輸入exit返回vim |
另附一張vim跳轉圖供參考