【轉】Vim速查表-幫你提高N倍效率
阿新 • • 發佈:2018-10-27
name 娛樂 描述 類型 輸出 打開文件 搜索命令 note 小寫
Vim速查表-幫你提高N倍效率
轉自:https://www.jianshu.com/p/6aa2e0e39f99
去年上半年開始全面使用linux進行開發和娛樂了,現在已經回不去windows了。
話歸正傳,在linux上一直使用vim,慢慢熟悉了它的命令,才終於領悟了什麽是編輯器之神。
最近抽空整理了這份速查表,收獲頗豐,並分享給大家。
進入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語言格式裏面的自動縮進 |
移動光標
命令 | 描述 |
---|---|
k nk | 上 向上移動n行 |
j nj | 下 向下移動n行 |
h nh | 左 向左移動n行 |
l nl | 右 向右移動n行 |
Space | 光標右移一個字符 |
Backspace | 光標左移一個字符 |
Enter | 光標下移一行 |
w/W | 光標右移一個字至字首 |
b/B | 光標左移一個字至字首 |
e或E | 光標右移一個字至字尾 |
) | 光標移至句尾 |
( | 光標移至句首 |
} | 光標移至段落開頭 |
{ | 光標移至段落結尾 |
n$ | 光標移至第n行尾 |
H | 光標移至屏幕頂行 |
M | 光標移至屏幕中間行 |
L | 光標移至屏幕最後行 |
0 | (註意是數字零)光標移至當前行首 |
^ | 移動光標到行首第一個非空字符上去 |
$ | 光標移至當前行尾 |
gg | 移到第一行 |
G | 移到最後一行 |
f | 移動光標到當前行的字符a上 |
F | 相反 |
% | 移動到與制匹配的括號上去(),{},[],<>等 |
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處 |
visual模式
命令 | 描述 |
---|---|
v | 進入visual 模式 |
V | 進入行的visual 模式 |
ctrl+v | 進如塊操作模式用o和O改變選擇的邊的大小 |
在所有行插入相同的內容如include< | 將光標移到開始插入的位置,按CTRL+V進入VISUAL模式,選擇好模塊後按I(shift+i),後插入要插入的文本,按[ESC]完成 |
行方式命令
命令 | 描述 |
---|---|
: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分隔窗口 |
:nsplit file.c | 為另一個文件file.c分隔窗口,並指定其行數 |
ctrl+w | 在窗口中切換 |
:close | 關閉當前窗口 |
文件及其他
命令 | 描述 |
---|---|
:q | 退出vi |
:q! | 不保存文件並退出vi |
:e filename | 打開文件filename進行編輯 |
:e! | 放棄修改文件內容,重新載入該文件編輯 |
:w | 保存當前文件 |
:wq | 存盤退出 |
:ZZ | 保存當前文檔並退出VIM |
:!command | 執行shell命令command |
:r!command | 將命令command的輸出結果放到當前行 |
:n1,n2 write temp.c | |
:read file.c | 將文件file.c的內容插入到當前光標所在的下面 |
【轉】Vim速查表-幫你提高N倍效率