一贷盲、Vim 模式介紹
-
普通模式(Normal mode)
在普通模式中葱蝗,用的編輯器命令,比如移動(dòng)光標(biāo)掉伏,刪除文本等等缝呕。這也是Vim啟動(dòng)后的默認(rèn)模式。這正好和許多新用戶期待的操作方式相反(大多數(shù)編輯器默認(rèn)模式為插入模式)斧散。
Vim強(qiáng)大的編輯能來自于其普通模式命令供常。普通模式命令往往需要一個(gè)操作符結(jié)尾。例如普通模式命令
dd
刪除當(dāng)前行鸡捐,第一個(gè)"d"的后面可以跟另外的移動(dòng)命令來代替第二個(gè)"d"栈暇,比如用移動(dòng)到下一行的"j"鍵就可以刪除當(dāng)前行和下一行。另外還可以指定命令重復(fù)次數(shù)闯参,2dd
(重復(fù)dd兩次)瞻鹏,和dj
的效果是一樣的。在學(xué)習(xí)了各種各樣的文本間移動(dòng)/
跳轉(zhuǎn)的命令和其他的普通模式的編輯命令鹿寨,并且能夠靈活組合使用的話新博,能夠比那些沒有模式的編輯器更加高效地進(jìn)行文本編輯。 -
插入模式(Insert mode)
在這個(gè)模式中脚草,大多數(shù)按鍵都會(huì)向文本緩沖中插入文本赫悄。大多數(shù)新用戶希望文本編輯器編輯過程中一直保持這個(gè)模式。
-
可視模式(Visual mode)
這個(gè)模式與普通模式比較相似馏慨。但是移動(dòng)命令會(huì)擴(kuò)大高亮的文本區(qū)域埂淮。高亮區(qū)域可以是字符、行或者是一塊文本写隶。當(dāng)執(zhí)行一個(gè)非移動(dòng)命令時(shí)倔撞,命令會(huì)被執(zhí)行到這塊高亮的區(qū)域上。Vim 的"文本對象"也能和移動(dòng)命令一樣用在這個(gè)模式中慕趴。
-
選擇模式(Select mode)
這個(gè)模式和無模式編輯器的行為比較相似(Windows標(biāo)準(zhǔn)文本控件的方式)痪蝇。這個(gè)模式中鄙陡,可以用鼠標(biāo)或者光標(biāo)鍵高亮選擇文本,不過輸入任何字符的話躏啰,Vim會(huì)用這個(gè)字符替換選擇的高亮文本塊趁矾,并且自動(dòng)進(jìn)入插入模式。
-
命令行模式(Command line mode)
在命令行模式中可以輸入會(huì)被解釋成并執(zhí)行的文本给僵。例如執(zhí)行命令(
:
鍵)毫捣,搜索(/
和?
鍵)或者過濾命令(!
鍵)。在命令執(zhí)行之后帝际,Vim返回到命令行模式之前的模式蔓同,通常是普通模式。 -
Ex模式(Ex mode)
這和命令行模式比較相似蹲诀,在使用
:visual
命令離開Ex模式前牌柄,可以一次執(zhí)行多條命令。 -
三種常用模式的切換
以上六種模式我們常用到就是普通模式侧甫、插入模式和命令行模式。
vim 啟動(dòng)進(jìn)入普通模式蹋宦,處于插入模式或命令行模式時(shí)只需要按
Esc
或者
Ctrl+[
即可進(jìn)入普通模式披粟。普通模式中按i
(插入)或a
(附加)鍵都可以進(jìn)入插入模式,普通模式中按:
進(jìn)入命令行模式冷冗。命令行模式中輸入wq
回車后保存并退出 vim守屉。
二、Vim 編輯器的基本操作
-
進(jìn)入 Vim
vim 后面加上你要打開的已存在的文件名或者不存在(則作為新建文件)的文件名蒿辙。
vim practice_1.txt
直接使用vim也可以打開vim編輯器拇泛,但是不會(huì)打開任何文件。
vim
進(jìn)入命令行模式后輸入
:e 文件路徑
同樣可以打開相應(yīng)文件思灌。 -
游標(biāo)移動(dòng)
在普通模式下俺叭,使用方向鍵或者h(yuǎn),j,k,l鍵可以移動(dòng)游標(biāo)。
按鍵 說明 h
左 l
右 j
下 k
上 w
移動(dòng)到下一個(gè)單詞 b
移動(dòng)到上一個(gè)單詞 -
進(jìn)入插入模式
在普通模式下使用下面的鍵將進(jìn)入插入模式泰偿,并可以從相應(yīng)的位置開始輸入熄守。
命令 說明 i
在當(dāng)前光標(biāo)處進(jìn)行編輯 I
在行首插入 A
在行末插入 a
在光標(biāo)后插入編輯 o
在當(dāng)前行后插入一個(gè)新行 O
在當(dāng)前行前插入一個(gè)新行 cw
替換從光標(biāo)所在位置后到一個(gè)單詞結(jié)尾的字符 -
命令行模式下保存文檔
從普通模式輸入
:
進(jìn)入命令行模式,輸入w
并回車耗跛,保存文檔裕照。輸入:w 文件名
可以將文檔另存為其他文件名或存到其它路徑下。 -
命令行模式下退出 vim
從普通模式輸入
:
進(jìn)入命令行模式调塌,輸入wq
回車晋南,保存并退出編輯。以下為其它幾種退出方式:
命令 說明 :q!
強(qiáng)制退出羔砾,不保存 :q
退出 :wq!
強(qiáng)制保存并退出 :w <文件路徑>
另存為 :saveas <文件路徑>
另存為 :x
保存并退出 :wq
保存并退出 -
普通模式下退出 vim
普通模式下鍵入
Shift+zz
即可保存退出 vim 负间。 -
普通模式下刪除 vim 文本信息
進(jìn)入普通模式偶妖,使用下列命令可以進(jìn)行文本快速刪除:
命令 說明 x
刪除游標(biāo)所在的字符 X
刪除游標(biāo)所在前一個(gè)字符 Delete
刪除游標(biāo)所在的字符 dd
刪除整行 dw
刪除一個(gè)單詞(英文) d$或D
刪除至行尾 d^
刪除至行首 dG
刪除到文檔結(jié)尾處 d1G
刪至文檔首部 除此之外,在命令之前加上數(shù)字唉擂,表示一次刪除多行餐屎,如:
2dd
表示一次刪除2行。
三玩祟、 Vim 文本編輯命令
-
重復(fù)執(zhí)行上次命令
在普通模式下
.
(小數(shù)點(diǎn))表示重復(fù)上一次的命令操作 -
執(zhí)行指定次數(shù)相同的命令
進(jìn)入普通模式輸入
N<command>
腹缩,N 表示重復(fù)后面的次數(shù),在普通模式下空扎,你還可以使用
dw
或者daw
(delete a word)刪除一個(gè)單詞藏鹊,dnw
(n替換為相應(yīng)數(shù)字) 表示刪除n個(gè)單詞。 -
使用命令進(jìn)行快速調(diào)整縮進(jìn)操作
縮進(jìn)操作均在普通模式下有效
- 普通模式下輸入
>>
整行將向右縮進(jìn)(用于格式化代碼) - 普通模式下輸入
<<
整行向左回退
- 普通模式下輸入
-
行間跳轉(zhuǎn)
如果默認(rèn)沒有顯示行號转锈,請先進(jìn)入命令模式盘寡,輸入
:set nu
以顯示行號命令 說明 nG(n Shift+g)
游標(biāo)移動(dòng)到第 n 行 gg
游標(biāo)移動(dòng)到到第一行 G(Shift+g)
到最后一行 小技巧:你在完成依次跳轉(zhuǎn)后,可以使用
Ctrl+o
快速回到上一次(跳轉(zhuǎn)前)光標(biāo)所在位置 -
行內(nèi)跳轉(zhuǎn)
普通模式下使用下列命令在行內(nèi)按照單詞為單位進(jìn)行跳轉(zhuǎn)
命令 說明 w
到下一個(gè)單詞的開頭 e
到當(dāng)前單詞的結(jié)尾 b
到前一個(gè)單詞的開頭 ge
到前一個(gè)單詞的結(jié)尾 0或^
到行頭 $
到行尾 f<字母>
向后搜索<字母>并跳轉(zhuǎn)到第一個(gè)匹配的位置 F<字母>
向前搜索<字母>并跳轉(zhuǎn)到第一個(gè)匹配的位置 t<字母>
向后搜索<字母>并跳轉(zhuǎn)到第一個(gè)匹配位置之前的一個(gè)字母(不常用) T<字母>
向前搜索<字母>并跳轉(zhuǎn)到第一個(gè)匹配位置之后的一個(gè)字母(不常用) -
復(fù)制及粘貼文本
普通模式中使用y復(fù)制撮慨,使用 p 粘貼竿痰。
命令 說明 yy
復(fù)制游標(biāo)所在的整行( 3yy
表示復(fù)制3行)y^
復(fù)制至行首,或 y0
(不含光標(biāo)所在處字符)y$
復(fù)制至行尾(含光標(biāo)所在處字符) yw
復(fù)制一個(gè)單詞( y2w
復(fù)制兩個(gè)單詞)yG
復(fù)制至文本末 y1G
復(fù)制至文本開頭 p
代表粘貼至光標(biāo)后(下) P
代表粘貼至光標(biāo)前(上) -
剪切及粘貼
其實(shí)
dd
刪除命令就是剪切砌溺,你每次dd
刪除文檔內(nèi)容后影涉,便可以使用p
來粘貼,也這一點(diǎn)可以讓我們實(shí)現(xiàn)一個(gè)很爽快的功能——交換上下行:ddp
四规伐、查找與替換
-
替換和撤銷(Undo)命令
替換和Undo命令都是針對普通模式下的操作
命令 說明 r+<待替換字母>
將游標(biāo)所在字母替換為指定字母 R
連續(xù)替換蟹倾,直到按下 Esc
cc
替換整行,即刪除游標(biāo)所在行猖闪,并進(jìn)入插入模式 cw
替換一個(gè)單詞鲜棠,即刪除一個(gè)單詞,并進(jìn)入插入模式 C
替換游標(biāo)以后至行末 ~
反轉(zhuǎn)游標(biāo)所在字母大小寫 u{n}
撤銷一次或n次操作 U
撤銷當(dāng)前行的所有修改 Ctrl+r
redo培慌,即撤銷undo的操作 -
shiftwidth 命令
shiftwidth 命令是指
>>
命令產(chǎn)生的縮進(jìn)(可以簡寫成sw
) 普通模式下輸入:進(jìn)入命令行模式下對 shiftwidth 值進(jìn)行設(shè)置可以控制縮進(jìn)和回退的字符數(shù)豁陆。獲取目前的設(shè)定值
:set shiftwidth?
設(shè)置縮進(jìn)為10個(gè)字符
:set shiftwidth=10
-
調(diào)整文本位置
命令行模式下輸入
:ce
(center)命令使本行內(nèi)容居中命令行模式下輸入
:ri
(right)命令使本行文本靠右命令行模式下輸入
:le
(left) 命令使本行內(nèi)容靠左 -
快速查找
使用 vim 打開文件進(jìn)行編輯(搜索高亮需在配置文件
.vimrc
中設(shè)置set hls
)- 普通模式下輸入
/icmp
然后回車即可查找字符串 icmp - 普通模式下輸入
n
查找下一個(gè) icmp - 普通模式下輸入
?tcp
向上查找字符串 tcp - 普通模式下輸入
N
查找上一個(gè)出現(xiàn)的 tcp - 命令行模式下輸入
noh
然后回車即可取消搜索
- 普通模式下輸入
-
高級查找
- 普通模式下輸入
\*
尋找游標(biāo)所在處的單詞 - 普通模式下輸入
\#
同上吵护,但\#
是向前(上)找献联,\*
則是向后(下)找 - 普通模式下輸入
g\*
同\*
,但部分符合該單詞即可 - 普通模式下輸入
g\#
同\#
何址,但部分符合該單詞即可 - 以上查找
n,N
的繼續(xù)查找命令依然可以用
- 普通模式下輸入
五里逆、Vim 高級功能入門
-
使用 vim 編輯多個(gè)文件
編輯多個(gè)文件有兩種形式,一種是在進(jìn)入 vim 前使用的參數(shù)就是多個(gè)文件用爪。另一種就是進(jìn)入 vim 后再編輯其他的文件原押。默認(rèn)進(jìn)入第一個(gè)文件的編輯界面
- 命令行模式下輸入
:n
編輯下一個(gè)文件,可以加!
即:n!
強(qiáng)制切換偎血,之前一個(gè)文件的輸入沒有保存诸衔,僅僅切換到另一個(gè)文件盯漂。 - 命令行模式下輸入
:N
編輯上一個(gè)文件,可以加!
即:N!
強(qiáng)制切換笨农,之前文件內(nèi)的輸入沒有保存就缆,僅僅是切換到另一個(gè)文件。
- 命令行模式下輸入
-
進(jìn)入 vim 后打開新文件
- 命令行模式下輸入
:e 3.txt
打開新文件 3.txt - 命令行模式下輸入
:e#
回到前一個(gè)文件 - 命令行模式下輸入
:ls
可以列出以前編輯過的文檔 - 命令行模式下輸入
:b 2.txt
(或者編號)可以直接進(jìn)入文件 2.txt 編輯 - 命令行模式下輸入
:bd 2.txt
(或者編號)可以刪除以前編輯過的列表中的文件項(xiàng)目 - 命令行模式下輸入
:e! 4.txt
谒亦,新打開文件 4.txt竭宰,放棄正在編輯的文件 - 命令行模式下輸入
:f
顯示正在編輯的文件名 - 命令行模式下輸入
:f new.txt
,改變正在編輯的文件名字為 new.txt
- 命令行模式下輸入
-
恢復(fù)文件
如果因?yàn)閿嚯姷仍蛟斐晌臋n沒有保存份招,可以采用恢復(fù)方式切揭,
vim -r
進(jìn)入文檔后,輸入:ewcover 1.txt
來恢復(fù) -
可視模式命令簡介
- 在普通模式下輸入
v
(小寫)锁摔,進(jìn)入字符選擇模式廓旬,就可以移動(dòng)光標(biāo),光標(biāo)走過的地方就會(huì)選取谐腰。再次按下v后就會(huì)取消選取孕豹。 - 在普通模式下輸入
Shift+v
(小寫),進(jìn)入行選擇模式十气,按下V
之后就會(huì)把整行選取巩步,您可以上下移動(dòng)光標(biāo)選更多的行,同樣桦踊,再按一次Shift+v
就可以取消選取。 - 在普通模式下輸入
Ctrl+v
(小寫)终畅,這是區(qū)域選擇模式籍胯,可以進(jìn)行矩形區(qū)域選擇,再按一次Ctrl+v
取消選取离福。 - 在可視模式下輸入
d
刪除選取區(qū)域內(nèi)容 - 在可視模式下輸入
y
復(fù)制選取區(qū)域內(nèi)容
- 在普通模式下輸入
-
視窗操作簡介
vim 可以在一個(gè)界面里打開多個(gè)窗口進(jìn)行編輯杖狼,這些編輯窗口稱為 vim 的視窗。 打開方法有很多種妖爷,例如可以使用在命令行模式下輸入
:new
打開一個(gè)新的 vim 視窗蝶涩,并進(jìn)入視窗編輯一個(gè)新文件(普通模式下輸入Ctrl+w
也可以),除了:new
命令絮识,下述列舉的多種方法也可以在命令模式或普通模式下打開新的視窗:- 命令行模式下輸入
:sp 1.txt
打開新的水平分屏視窗來編輯 1.txt - 命令行模式下輸入
:vsp 2.txt
打開新的垂直分屏視窗來編輯 2.txt - 普通模式下
Ctrl+ws
將當(dāng)前窗口分割成兩個(gè)水平的窗口 - 普通模式下
Ctrl+wv
將當(dāng)前窗口分割成兩個(gè)垂直的窗口 - 普通模式下
Ctrl+wq
即:q
結(jié)束分割出來的視窗绿聘。如果在新視窗中有輸入需要使用強(qiáng)制符!
即:q!
- 普通模式下
Ctrl+wo
打開一個(gè)視窗并且隱藏之前的所有視窗 - 普通模式下
Ctrl+wj
移至下面視窗 - 普通模式下
Ctrl+wk
移至上面視窗 - 普通模式下
Ctrl+wh
移至左邊視窗 - 普通模式下
Ctrl+wl
移至右邊視窗 - 普通模式下
Ctrl+wJ
將當(dāng)前視窗移至下面 - 普通模式下
Ctrl+wK
將當(dāng)前視窗移至上面 - 普通模式下
Ctrl+wH
將當(dāng)前視窗移至左邊 - 普通模式下
Ctrl+wL
將當(dāng)前視窗移至右邊 - 普通模式下
Ctrl+w-
減小視窗的高度 - 普通模式下
Ctrl+w+
增加視窗的高度
- 命令行模式下輸入