1. 程式人生 > >vim強大指令總結

vim強大指令總結

游標移動

操作指令 具體內容
h或向左箭頭(←) 游標向左移動1個字元
j或向下箭頭(↓) 游標向下移動1個字元
k或向上箭頭(↑) 游標向上移動1個字元
l或向右箭頭(→) 游標向右移動1個字元
h或向左箭頭(←) 游標向左移動1個字元
對以上,若在指令前輸入n則移動n位,如30j則表示向下移動30行
[ctrl]+[f] 向下移動一頁
[ctrl]+[b] 向上移動一頁
[ctrl]+[d] 向下移動半頁
[ctrl]+[u] 向上移動半頁
+ 游標移動到非空格的下一列
- 游標移動到非空格的上一列
n 向右移動n位
0或功能鍵[HOME] 移動到這一行的最前面
$或功能鍵[END] 移動到這一行的最後面
H 移動到第一行第一個字元
G或L 移動到最後一行
M 移動到中間一行
nG或 :n 移動到第n行
gg 移動到第一行

搜尋和替代

操作指令 具體內容
/word 向下查詢word欄位
?word 向上查詢word欄位
n 向下重複上一個查詢欄位
N 向上重複上一個查詢欄位
:s/old/new/ 將當前行第一個old欄位替換為new欄位
:s/old/new/g 將當前行所有old欄位替換為new欄位
:n,$s/old/new 將第n行開始,到最後一行中的每一行的第一個old欄位替換成new欄位
:n,$s/old/new/g 將從第n行開始,到最後一行中每一行的所有old欄位替換成new欄位
若n為.表示從當前行開始替換
:%s/old/new/ 等同於 :g/old/s//new/ 替換每一行的第一個 old 為 new
:%s/old/new/g 等同於 :g/old/s//new/g 替換每一行中所有 old 為 new
:n1,n2s/old/new/g 將n1到n2行中所有的old欄位替換成new欄位
:%s+/oradata/apras/+/user01/apras1+ (使用+ 來 替換 / ) /oradata/apras/替換成/user01/apras1/
:s#vivian/#sky/#使用 # 作為分隔符,此時中間出現的 / 不會作為分隔符 替換當前行第一個 vivian/ 為 sky/

刪除、複製和貼上

操作指令 具體內容
x 向後刪除一個字元
X 向前刪除一個字元
dd 刪除當前行
ndd 向下刪除n行
d1G 刪除游標所在到第一行資料
dG 刪除游標所在到最後一行資料
d$ 刪除游標所在到本行的最後一個字元
d0 刪除游標所在到本行的第一個字元
yy 複製當前行
nyy 向下複製n行
y1G 複製游標所在行到第一行的所有資料
yG 複製游標所在行到最後一行的所有資料
y0 複製游標到本行行首的所有資料
y$ 複製游標到本行行尾的所有資料
p 將複製資料貼上在游標的下一行
P 將複製資料貼上在游標的上一行
J 將游標所在行和下一行資料合成一行
u 復原上一個動作
[ctrl]+r 重做上一次動作

其他常用操作

操作指令 具體內容
:w 將編輯的資料儲存成另一個檔案(類似另存新檔)
:n1,n2 w [filename] 將 n1 到 n2 的內容儲存成 filename 這個檔案。
:! command 暫時離開 vi 到指令列模式下執行 command 的顯示結果,如:! ls ~
: r !command 將command命令的執行結果插入到文本當前行的下一行
: 3 !command 將文字中第三行的內容輸入到命令command中進行處理,並將第三行的內容替換為命令的執行結果
:1,3 !command 將文字中第一行到第三行的內容輸入到命令command中進行處理,並將第一行到第三行的內容替換為命令的執行結果
:3 w !command 將文字中第三行的內容輸入到命令command中進行處理,不改變當前編輯檔案的內容.
:1,3 w !command 將文字中第一行到第三行的內容輸入到命令command中進行處理,不改變當前編輯檔案的內容
:shell 切換到shell,此時vim在後臺執行,在shell中輸入命令exit,切換回vim

多檔案編輯

操作指令 具體內容
vim filename1 filename2 同一個視窗顯示多個檔案(開啟後暫時只顯示filename1的內容
:n 切換到下一個檔案
:N 切換到上一個檔案
:n filename2 切換到檔案filename2
:ls 列出vim開啟的所有檔案的資訊,包括檔名,buffer id等
:b2 切換到buffer id為2的buffer
:bn 切換到當前buffer的下一個buffer
:bp 切換當前buffer的前一個buffer
:bd 關閉當前buffer,對應檔案也隨之關閉
:bd2 關閉buffer id為2的buffer,對應檔案也隨之關閉
:e file 開啟新檔案,但不會分割視窗
:sp file 開啟新檔案,並且將會水平分割視窗
:vsp file 開啟新檔案,並且將會垂直分割視窗

分割視窗,顯示多個檔案

操作指令 具體內容
vim -o filename1 filename2 水平分割視窗
vim -O filename1 filename2 垂直分割視窗
[ctrl] + ww 實現串列埠間的切換

其中,水平分割的示意圖如下所示
水平切割示意圖
垂直分割的示意圖如下所示
垂直切割示意圖