vim強大指令總結
阿新 • • 發佈:2019-01-06
游標移動
操作指令 | 具體內容 |
---|---|
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 | 實現串列埠間的切換 |
其中,水平分割的示意圖如下所示:
垂直分割的示意圖如下所示: