標籤:vim命令簡表
前言
Vim是一個超級牛的編輯器,可以說是專為程式員設計的編輯器,強大的有些不可思議。
不過其學習曲線稍顯陡峭,前兩天在網上找到一個小圖表,比較全,如果對錶中所列的命令學習熟悉以後,
處理日常的文本就已經足夠,所以貼出來,大家參考參考。
Vim的牛B之處不在於其功能之繁多,更不在於其學習曲線之陡峭,
而在於這些命令大都可以進行組合,比如,9yy命令表示複製9行內容,9表示要複製的行數,
同樣100dd表示刪除100行,當數字和命令合作的時候,就比單純的命令更強大,
同樣,c命令表示擦除,w表示word即單詞,那麼cw就表示擦除一個單詞,
c5w就表示刪除5個單詞等等。將這些簡單命令合成在一起,
就可以發揮出難以想象的強大功能,而且可以使你的編輯工作充滿樂趣。
宏命令(Macros)
進階一些的編輯器,都會包含宏功能,vim當然不能缺少了,在vim中使用宏是非常方便的:
: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等的標籤頁是一個意思!
視窗命令
ctrl+w s水平分割視窗
ctrl+w w切換視窗
ctrl+w q退出當前視窗(由於同時有多個檔案,此命令不會影響其他視窗)
ctrl+w v垂直分割視窗
其他
vim在儲存之前不會對檔案做實際的修改,只是載入到緩衝區中,對檔案的編輯其實是對緩衝區的編輯,直到:w時才會存入物理檔案。
: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,
注意此處的+不表示操作符,二十一個寄存器。
移動游標
在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的強大之處在於這些命令可以組合起來使用,那樣才能體現出其強大的編輯功能。
我在網上找到的這個文檔也順便貼出來,大家可以同時參考。
如果有機會,我盡量找些例子來說明這些命令在實際中的用法,那樣才可以更好的使用它,提高我們的工作效率。
本文出自 “半城煙沙” 部落格,請務必保留此出處http://vabc1314.blog.51cto.com/2164199/1536581