進入vim
命令 | 描述 |
---|---|
vim filename | 打開或新建文件,並將光標置於第一行首 |
vim +n filename | 打開文件,並將光標置於第n行首 |
vim + filename | 打開文件,並將光標置於最後一行首 |
vim +/pattern filename | 打開文件,並將光標置於第一個與pattern匹配的串處 |
vim -r filename | 在上次正用vim編輯時發生系統崩潰,恢復filename |
vim filename….filename | 打開多個文件,依次編輯 |
vim配置
命令 | 描述 |
---|---|
all | 列出所有選項設置情況 |
term | 設置終端類型 |
ignorance | 在搜索中忽略大小寫 |
list | 顯示製表位(Ctrl+I)和行尾標誌($) |
number | 顯示行號 |
report | 顯示由面向行的命令修改過的數目 |
terse | 顯示簡短的警告信息 |
warn | 在轉到別的文件時若沒保存當前文件則顯示NO write信息 |
nomagic | 允許在搜索模式中,使用前面不帶“\”的特殊字符 |
nowrapscan | 禁止vi在搜索到達文件兩端時,又從另一端開始 |
mesg | 允許vi顯示其他用戶用write寫到自己終端上的信息 |
:set number / set nonumber | 顯示/不顯示行號 |
:set ruler /set noruler | 顯示/不顯示標尺 |
:set hlsearch | 高亮顯示查找到的單詞 |
:set nohlsearch | 關閉高亮顯示 |
:syntax on | 語法高亮 |
:set nu | 顯示行號 |
:set tabstop=8 | 設置tab大小,8爲最常用最普遍的設置 |
:set softtabstop=8 | 4:4個空格,8:正常的製表符,12:一個製表符4個空格,16:兩個製表符 |
:set autoindent | 自動縮進 |
:set cindent | C語言格式裏面的自動縮進 |
移動光標
長跳 如end-of-line被認爲是一個字
命令 | 描述 |
---|---|
k nk | 上 向上移動n行 |
j nj | 下 向下移動n行 |
h nh | 左 向左移動n行 |
l nl | 右 向右移動n行 |
Space | 光標右移一個字符 |
Backspace | 光標左移一個字符 |
Enter | 光標下移一行 |
w/W | 光標右移一個字至字首(W 長跳) |
b/B | 光標左移一個字至字首(B 長跳) |
e或E | 光標右移一個字至字尾(E 長跳) |
) | 光標移至句尾 |
( | 光標移至句首 |
} | 光標移至段落開頭 |
{ | 光標移至段落結尾 |
n$ | 光標移至第n行尾 |
H | 光標移至屏幕頂行 |
M | 光標移至屏幕中間行 |
L | 光標移至屏幕最後行 |
0 | (注意是數字零)光標移至當前行首 |
^ | 移動光標到行首第一個非空字符上去 |
$ | 光標移至當前行尾 |
gg | 移到第一行 |
G | 移到最後一行 |
fa | 移動光標到當前行的字符a上 |
Fa | 與fa相反 |
% | 移動到與制匹配的括號上去(),{},[],<>等 |
nG | 移動到第n行上 |
G | 到最後一行 |
屏幕滾動
命令 | 描述 |
---|---|
Ctrl+u | 向文件首翻半屏 |
Ctrl+d | 向文件尾翻半屏 |
Ctrl+f | 向文件尾翻一屏 |
Ctrl+b | 向文件首翻一屏 |
nz | 將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部 |
插入
命令 | 描述 |
---|---|
i | 在光標前 |
I | 在當前行首 |
a | 光標後 |
A | 在當前行尾 |
o | 在當前行之下新開一行 |
O | 在當前行之上新開一行 |
r | 替換當前字符 |
R | 替換當前字符及其後的字符,直至按ESC鍵 |
s | 從當前光標位置處開始,以輸入的文本替代指定數目的字符 |
S | 刪除指定數目的行,並以所輸入文本代替之 |
ncw/nCW | 修改指定數目的字 |
nCC | 修改指定數目的行 |
== | 自動縮進當前行 |
刪除(剪切)命令
命令 | 描述 |
---|---|
x/X | 刪除一個字符,x刪除光標後的,而X刪除光標前的 |
dw | 刪除一個單詞(刪除光標位置到下一個單詞開始的位置) |
dnw | 刪除n個單詞 |
dne | 也可,只是刪除到單詞尾 |
do | 刪至行首 |
d$ | 刪至行尾 |
dd | 刪除一行 |
ndd | 刪除當前行及其後n-1行 |
dnl | 向右刪除n個字母 |
dnh | 向左刪除n個字母 |
dnj | 向下刪除n行,當前行+其上n行 |
dnk | 向上刪除n行,當期行+其下n行 |
cnw[word] | 將n個word改變爲word |
C$ | 改變到行尾 |
cc | 改變整行 |
shift+j | 刪除行尾的換行符,下一行接上來了 |
複製粘貼
命令 | 描述 |
---|---|
p | 粘貼用x或d刪除的文本 |
ynw | 複製n個單詞 |
yy | 複製一行 |
ynl | 複製n個字符 |
y$ | 複製當前光標至行尾處 |
nyy | 拷貝n行 |
撤銷
命令 | 描述 |
---|---|
u | 撤銷前一次的操作 |
shif+u(U) | 撤銷對該行的所有操作 |
搜索及替換
命令 | 描述 |
---|---|
/pattern | 從光標開始處向文件尾搜索pattern |
?pattern | 從光標開始處向文件首搜索pattern |
n | 在同一方向重複上一次搜索命令 |
N | 在反方向上重複上一次搜索命令 |
cw newword | 替換爲newword |
n | 繼續查找 |
. | 執行替換 |
:s/p1/p2/g | 將當前行中所有p1均用p2替代,g表示執行 用c表示需要確認 |
:n1,n2 s/p1/p2/g | 將第n1至n2行中所有p1均用p2替代 |
:g/p1/s//p2/g | 將文件中所有p1均用p2替換 |
:1,$ s/string1/string2/g | 在全文中將string1替換爲string2 |
書籤
命令 | 描述 |
---|---|
m[a-z] | 在文中做標記,標記號可爲a-z的26個字母 |
`a | 移動到標記a處 |
標籤
:tabe fn | 在一個新的標籤頁中編輯文件fn |
---|---|
gt | 切換到下一個標籤頁 |
gT | 切換到上一個標籤頁 |
:tabr | 切換到第一個標籤頁 |
:tabl | 切換到最後一個標籤頁 |
:tabm [N] | 把當前tab移動到第N個tab之後 |
visual模式
命令 | 描述 |
---|---|
標記文本 | |
v | 進入visual 模式 |
V | 進入行的visual 模式 |
ctrl+v | 進如塊操作模式用o和O改變選擇的邊的大小 |
在所有行插入相同的內容如include< | 將光標移到開始插入的位置,按CTRL+V進入VISUAL模式,選擇好模塊後按I(shift+i),後插入要插入的文本,按[ESC]完成 |
o | 跳轉光標到選中塊的另一個端點 |
U | 將選中塊中的內容轉成大寫 |
O | 跳轉光標到塊的另一個端點 |
aw | 選中一個字 |
ab | 選中括號中的所有內容,包括括號本身 |
aB | 選中{}括號中的所有內容 |
ib | 選中括號中的內容,不含括號 |
iB | 選中{}中的內容,不含{} |
對標記進行動作 | |
> | 塊右移 |
< | 塊左移 |
y | 複製塊 |
d | 刪除塊 |
~ | 切換塊中內容的大小寫 |
行方式命令
命令 | 描述 |
---|---|
:n1,n2 co n3 | 將n1行到n2行之間的內容拷貝到第n3行下 |
:n1,n2 m n3 | 將n1行到n2行之間的內容移至到第n3行下 |
:n1,n2 d | 將n1行到n2行之間的內容刪除 |
:n1,n2 w!command | 將文件中n1行至n2行的內容作爲command的輸入並執行之 若不指定n1,n2,則表示將整個文件內容作爲command的輸入 |
宏
命令 | 描述 |
---|---|
q[a-z] | 開始記錄但前開始的操作爲宏,名稱可爲【a-z】,然後用q終止錄製宏 |
reg | 顯示當前定義的所有的宏,用@[a-z]來在當前光標處執行宏[a-z] |
窗口操作
命令 | 描述 |
---|---|
:split | 橫向分割窗口 |
:split file.c | 爲另一個文件file.c分隔窗口 |
:vsplit | 縱向分割窗口 |
:nsplit file.c | 爲另一個文件file.c分隔窗口,並指定其行數 |
ctrl+w | 在窗口中切換 |
:close | 關閉當前窗口 |
ctrl+w s | 水平分割窗口 |
ctrl+w w | 切換窗口 |
ctrl+w q | 退出當前窗口(由於同時有多個文件,此命令不會影響其他窗口) |
ctrl+w v | 垂直分割窗口 |
退出
命令 | 描述 |
---|---|
:q | 退出vi |
:q! | 不保存文件並退出vi |
:wq | 保存修改並退出 |
:w | 將緩衝區寫入文件,即保存修改 |
:x | 保存修改並退出 |
:ZZ | 保存當前文檔並退出VIM |
其他操作
命令 | 描述 |
---|---|
:e filename | 打開文件filename進行編輯 |
:e! | 放棄修改文件內容,重新載入該文件編輯 |
:!command | 執行shell命令command |
:r!command | 將命令command的輸出結果放到當前行 |
:n1,n2 write temp.c | |
:read file.c | 將文件file.c的內容插入到當前光標所在的下面 |