Vim是一個超級牛的編輯器,能夠說是專爲程序員設計的編輯器,強大的有些難以想象。不過其學習曲線稍顯陡峭,前兩天在網上找到一個小圖表,比較全,若是對錶中所列的命令學習熟悉之後,處理平常的文本就已經足夠,因此貼出來,你們參考參考。程序員
Vim的牛B之處不在於其功能之繁多,更不在於其學習曲線之陡峭,而在於這些命令大均可以進行組合, 好比,9yy命令表示複製9行內容,9表示要複製的行數,一樣100dd表示刪除100行,當數字和命令合做的時候,就比單純的命令更強大,一樣,c命令 表示擦除,w表示word即單詞,那麼cw就表示擦除一個單詞,c5w就表示刪除5個單詞等等。將這些簡單命令合成在一塊兒,就能夠發揮出不可思議的強大功 能,並且可使你的編輯工做充滿樂趣。vim
高級一些的編輯器,都會包含宏功能,vim固然不能缺乏了,在vim中使用宏是很是方便的:eclipse
:qx | 開始記錄宏,並將結果存入寄存器x |
q | 退出記錄模式 |
@x | 播放記錄在x寄存器中的宏命令 |
稍微解釋一下,當在normal模式下輸入:qx後,你對文本的全部編輯動做將會被記錄下來,再次輸入q即退出了記錄模式,而後輸入@x對剛纔記錄 下來的命令進行重複,此命令後可跟數字,表示要重複多少次,好比@x20,能夠重複20次。這個在文本的批處理中是很是有用的。編輯器
在vim衆多的插件中,有一個叫minibuffer的插件,就是下面所說的標籤頁功能了,能夠支持同時編輯多個文件。學習
:tabe fn | 在一個新的標籤頁中編輯文件fn |
gt | 切換到下一個標籤頁 |
gT | 切換到上一個標籤頁 |
:tabr | 切換到第一個標籤頁 |
:tabl | 切換到最後一個標籤頁 |
:tabm [N] | 把當前tab移動到第N個tab以後 |
對,正如你所想象的那樣,跟eclipse, ue等的標籤頁是一個意思!ui
ctrl+w s | 水平分割窗口 |
ctrl+w w | 切換窗口 |
ctrl+w q | 退出當前窗口(因爲同時有多個文件,此命令不會影響其餘窗口) |
ctrl+w v | 垂直分割窗口 |
vim在保存以前不會對文件作實際的修改,只是加載到緩衝區中,對文件的編輯實際上是對緩衝區的編輯,直到:w時纔會存入物理文件。spa
:e file | 把file加載到新的緩衝區中 |
:bn | 跳轉到下一個緩衝區 |
:bd | 刪除緩衝區(關閉文件) |
:sp fn | 分割窗口,並將fn加載到新的窗口中 |
:w | 將緩衝區寫入文件,即保存修改 |
:wq | 保存修改並退出 |
:x | 保存修改並退出 |
:q | 退出,若是對緩衝區進行過修改,則會提示 |
:q! | 強制退出,放棄修改 |
/pattern | 向後搜索字符串pattern |
?pattern | 向前搜索字符串pattern |
n | 下一個匹配(若是是/搜索,則是向下的下一個,?搜索則是向上的下一個) |
N | 上一個匹配(同上) |
:%s/old/new/g | 搜索整個文件,將全部的old替換爲new |
:%s/old/new/gc | 搜索整個文件,將全部的old替換爲new,每次都要你確認是否替換 |
dd | 刪除光標所在行 |
dw | 刪除一個字(word) |
x | 刪除當前字符 |
X | 刪除前一個字符 |
D | 刪除到行末 |
yy | 複製一行,此命令前可跟數字,標識複製多行,如6yy,表示從當前行開始複製6行 |
yw | 複製一個字 |
y$ | 複製到行末 |
p | 粘貼粘貼板的內容到當前行的下面 |
P | 粘貼粘貼板的內容到當前行的上面 |
]p | 有縮進的粘貼,vim會自動調節代碼的縮進 |
"a | 將內容放入/存入a寄存器,能夠支持多粘貼板 |
附:好比經常使用的一個寄存器就是系統寄存器,名稱爲+,因此從系統粘貼板粘貼到vim中的命令爲"+p,注意此處的+不表示操做符,二十一個寄存器。.net
在vim中移動光標跟其餘的編輯器中有很大的區別,不過一旦學會了,就會飛速的在文本中移動了。插件
h,j,k,l | 上,下,左,右 |
ctrl-f | 上翻一頁 |
ctrl-b | 下翻一頁 |
% | 跳到與當前括號匹配的括號處,如當前在{,則跳轉到與之匹配的}處 |
w | 跳到下一個字首,按標點或單詞分割 |
W | 跳到下一個字首,長跳,如end-of-line被認爲是一個字 |
e | 跳到下一個字尾 |
E | 跳到下一個字尾,長跳 |
b | 跳到上一個字 |
B | 跳到上一個字,長跳 |
0 | 跳至行首,無論有無縮進,就是跳到第0個字符 |
^ | 跳至行首的第一個字符 |
$ | 跳至行尾 |
gg | 跳至文件的第一行 |
gd | 跳至當前光標所在的變量的聲明處 |
[N]G | 跳到第N行,如0G,就等價於gg,100G就是第100行 |
fx | 在當前行中找x字符,找到了就跳轉至 |
; | 重複上一個f命令,而不用重複的輸入fx |
tx | 與fx相似,可是隻是跳轉到x的前一個字符處 |
Fx | 跟fx的方向相反 |
),( | 跳轉到上/下一個語句 |
* | 查找光標所在處的單詞,向下查找 |
# | 查找光標所在處的單詞,向上查找 |
`. | 跳轉至上次編輯位置 |
H | 移動光標到當前屏幕上最上邊的一行 |
M | 移動光標到當前屏幕上中間的一行 |
L | 移動光標到當前屏幕上最下邊的一行 |
ma | 把當前位置存成標籤a |
`a | 跳轉到標籤a處 |
r | 替換一個字符 |
J | 將下一行和當前行鏈接爲一行 |
cc | 刪除當前行並進入編輯模式 |
cw | 刪除當前字,並進入編輯模式 |
c$ | 擦除從當前位置至行末的內容,並進入編輯模式 |
s | 刪除當前字符並進入編輯模式 |
S | 刪除光標所在行並進入編輯模式 |
xp | 交換當前字符和下一個字符 |
u | 撤銷 |
ctrl+r | 重作 |
. | 重複上一個編輯命令 |
~ | 切換大小寫,當前字符 |
g~iw | 切換當前字的大小寫 |
gUiw | 將當前字變成大寫 |
guiw | 將當前字變成小寫 |
>> | 將當前行右移一個單位 |
<< | 將當前行左移一個單位(一個tab符) |
== | 自動縮進當前行 |
i | 從當前光標處進入插入模式 |
I | 進入插入模式,並置光標於行首 |
a | 追加模式,置光標於當前光標以後 |
A | 追加模式,置光標於行末 |
o | 在當前行之下新加一行,並進入插入模式 |
O | 在當前行之上新加一行,並進入插入模式 |
Esc | 退出插入模式 |
v | 進入可視模式,單字符模式 |
V | 進入可視模式,行模式 |
ctrl+v | 進入可視模式,列模式,相似於UE的列模式 |
o | 跳轉光標到選中塊的另外一個端點 |
U | 將選中塊中的內容轉成大寫 |
O | 跳轉光標到塊的另外一個端點 |
aw | 選中一個字 |
ab | 選中括號中的全部內容,包括括號自己 |
aB | 選中{}括號中的全部內容 |
ib | 選中括號中的內容,不含括號 |
iB | 選中{}中的內容,不含{} |
> | 塊右移 |
< | 塊左移 |
y | 複製塊 |
d | 刪除塊 |
~ | 切換塊中內容的大小寫 |
好了,這張簡表就說到這裏,固然它涵蓋的範圍有限,可是正如片頭說的那樣,vim的強大之處在於這些命令能夠組合起來使用,那樣才能體現出其強大的 編輯功能。我在網上找到的這個文檔也順便貼出來,你們能夠同時參考。若是有機會,我儘可能找些例子來講明這些命令在實際中的用法,那樣才能夠更好的使用它, 提升咱們的工做效率。設計