在了解到Vim編輯器的強(qiáng)大的功能后虫碉,對于喜愛鍵盤想要擺脫鼠標(biāo)的我來說是一個(gè)非常大的誘惑。而Vim自帶的vimtutor無疑是一個(gè)入門的非常好的教程悬槽,該教程適合邊學(xué)邊用穗酥,很快就能了解最基本的Vim編輯器操作。本文將整理摘錄vimtutor中的前六章內(nèi)容框仔,方便查閱舀武。
第一講
1.1 移動光標(biāo)
在正常模式(Normal)下(使用<ESC>鍵可以進(jìn)入正常模式),使用h j k l
鍵進(jìn)行光標(biāo)的移動离斩,剛開始覺得這個(gè)設(shè)定極為反人類银舱,但熟練其操作后會發(fā)現(xiàn)這個(gè)設(shè)定極為巧妙,能更快第在屏幕內(nèi)四處移動光標(biāo)捐腿。
h
: 光標(biāo)向左移動;
l
: 光標(biāo)向右移動柿顶;
j
: 光標(biāo)向下移動茄袖;
k
: 光標(biāo)向上移動.
1.2 VIM的進(jìn)入和退出
在 Normal 模式下,
:q!<Enter>
: 退出編輯器嘁锯,這種方式將會丟棄所有未寫入的改動宪祥。
wq<Enter>
: 保存文件并退出。
1.3 文本編輯
在 Normal 模式下家乘,
x
: 刪除光標(biāo)所在位置的字符蝗羊;
i
: 在光標(biāo)所在位置之前插入字符;
a
: 在光標(biāo)所在位置之后插入字符仁锯;
A
: 在光標(biāo)所在行末尾插入字符耀找。
第二講
2.1 動作
動作列表
w
: 從當(dāng)前光標(biāo)位置移動到下一個(gè)單詞起始處,不包括它的第一個(gè)字符业崖;
e
: 從當(dāng)前光標(biāo)位置移動到單詞末尾野芒,包括最后一個(gè)字符;
$
: 從當(dāng)前光標(biāo)位置移動到當(dāng)前行末双炕。
計(jì)數(shù)指定動作
- 在動作前輸入數(shù)字會使該動作重復(fù)多次狞悲,e.g. :
- 2w 將光標(biāo)向后移動兩個(gè)單詞
- 3e 使光標(biāo)移向后移動到第三個(gè)單詞末尾
-
0
:移動光標(biāo)到行首
2.2 刪除類命令
改變文本的命令通常由一個(gè)操作符和一個(gè)動作構(gòu)成:
operator [number] motion
- operator 操作符
- [number] 可選操作,附加數(shù)字表示動作重復(fù)次數(shù)
- motion 動作妇斤,表示在所操作的文本上的移動
例如刪除類命令:
d [number] motion
- d 刪除操作符
dw
: 刪除至下一個(gè)單詞起始處摇锋,不包括下一個(gè)單詞的第一個(gè)字符;
de
: 刪除至當(dāng)前單詞末尾站超,包括最后一個(gè)字符荸恕;
d$
: 刪除至當(dāng)前行末尾;
刪除命令也可以搭配計(jì)數(shù)刪除更多死相。
dd
: 刪除當(dāng)前行戚炫;
dd
命令同樣可以在之前插入數(shù)字進(jìn)行計(jì)數(shù)刪除多行。
2.3 撤銷類命令
u
: 撤銷最后執(zhí)行的命令媳纬;
U
: 撤銷對整行的修改双肤。
CTRL-R
: 撤銷以前的撤銷命令施掏,恢復(fù)之前的操作結(jié)果
第三講
3.1 插入類命令
p
: 將最后一次刪除的內(nèi)容插入當(dāng)前光標(biāo)之后
3.2 替換類命令
r_
: 輸入 r 和一個(gè)字符替換光標(biāo)所在位置的字符
3.3 更改類命令
c [number] motion
- c 操作符
cw
: 更改文本直到該單詞末尾;
ce
: 更改文本直到下一單詞開始茅糜;
c$
: 更改文本直到行末七芭。
更改命令執(zhí)行后直接進(jìn)入 insert 模式。
第四講
4.1 定位及文件狀態(tài)
CTRL-g/G
: 顯示當(dāng)前編輯文件中當(dāng)前光標(biāo)所在行位置以及文件狀態(tài)信息蔑赘;
G
: 光標(biāo)跳轉(zhuǎn)到文件最后一行狸驳;
gg
: 光標(biāo)跳轉(zhuǎn)到文件第一行;
G+number
: 光標(biāo)跳轉(zhuǎn)到number表示的行號缩赛。
4.2 搜索類命令
/+string
: 正向查找string表示的字符串;
?+string
: 逆向查找string表示的字符串耙箍;
CTRL-O
:回到前一個(gè)位置;
CTRL-I
: 恢復(fù)到新的位置酥馍。
4.3 配對括號的查找
使用%
可查找匹配對的括號) \ ] \ }
:
將光標(biāo)移動到左括號處辩昆,按下%
,光標(biāo)將跳轉(zhuǎn)到匹配的右括號處旨袒,再按下一次可跳回原來的左括號處汁针。
(這對程序員來說真是個(gè)福音~)
4.4 替換命令
:s/old/new
: 在光標(biāo)所在行第一次出現(xiàn)的 old 表示的字符串替換為新的字符串 new ;
:s/old/new/g
: 在光標(biāo)所在行替換所有出現(xiàn)的 old 所表示的字符串替換為新的字符串 new ;
:#,#s/old/new/g
: 在兩行內(nèi)替換所有的字符串 old 為新的字符串 new 砚尽;
:%s/old/new/g
: 在文件內(nèi)替換所有的字符串 old 為新的字符串 new 施无;
:%s/old/new/gc
: 進(jìn)行全文替換時(shí)詢問用戶確認(rèn)每個(gè)替換。
第五講
5.1 在VIM內(nèi)部執(zhí)行外部命令
:!+command
: 執(zhí)行command所代表的外部命令
5.2 保存文件
:w FILENAME
: 將對文件的改動保存到一個(gè)文件中;
v motion: w FILENAME
: 將文件的部分內(nèi)容保存到文件中:
v 進(jìn)入可視模式(Visual), motion 表示光標(biāo)的移動必孤,可選中文本猾骡,按下:后下方將出現(xiàn)'<,'>
,輸入w FILENAME將選中的文本保存在文件FILENAME中敷搪∽苛罚可視選中后同樣也可以進(jìn)行批量刪除操作。
5.3 提取合并文件
:r FILENAME
: 提取磁盤文件 FILENAME 并將其插入到當(dāng)前文件光標(biāo)當(dāng)前位置后购啄;
:r !command
: 讀取command命令的輸出插入到當(dāng)前文件光標(biāo)當(dāng)前位置后襟企。
第六講
6.1 打開類命令
o
: 在光標(biāo)當(dāng)前行下方創(chuàng)建新的一行,并進(jìn)入插入模式狮含;
O
: 在光標(biāo)當(dāng)前行上方創(chuàng)建新的一行顽悼,并進(jìn)入插入模式。
6.2 置換類命令
R
: 連續(xù)替換多個(gè)字符几迄,與插入模式類似蔚龙,不過每個(gè)輸入的字符會替代光標(biāo)當(dāng)前字符,與鍵盤使用了 insert 鍵進(jìn)入改寫模式的情況類似映胁。
6.3 復(fù)制粘貼文本
進(jìn)入 Visual 模式木羹,
使用y
進(jìn)行復(fù)制,使用p
進(jìn)行粘貼
文本編輯部分整理至此。
順便推薦一個(gè)網(wǎng)站:VIM Adventures坑填,這是一個(gè)用VIM操作來進(jìn)行的游戲抛人,不過免費(fèi)版只能練習(xí)最基本的移動操作~
參考資料
- vimtutor
本文首發(fā)于個(gè)人博客Vim-vimtutor學(xué)習(xí)整理 | 不存在的貓,轉(zhuǎn)載請注明出處