從第一次接觸vi/vim到現在已經十幾年了,在這個過程中,來來回回,反反復復,學習vi很多次了。
雖然關於vi的使用,我還遠未達到“專家”的水平,但對於vi的使用,我有話說。
1.緣起
vi是一個編輯器,起源於unix,在linux中非常常用。關於vi的使用,網上有大量的教程,但質量良莠不齊,很容易誤導“新手”。本文的價值在於,我走了十幾年的彎路,你可以少走彎路。
每個人學習vi的目的不一樣,學習過程和學習方法也比如不同。一般學習者分如下3種情況:
-
新手級
新手要求不高,會用基本操作即可。本文通過10分鍾的學習,就可以達到這個目標。
-
進階級
大部分人目前處於這個階段,在本文的最后,將介紹如何從進階級步入專家級。
-
專家級
到這個階段,基本上可以做到“信手拈來”,出神入化了。
2.新手學習vi
對於新手入門vi,只要掌握打開文件,編輯,保存。
-
打開文件
在命令行中 vi filename,就可以打開文件進行查看和編輯。
-
編輯
打開文件后進行編輯的操作,主要包括“增、刪、改、查”。
和其他編輯器不同,vi 有
Normal模式
,Insert模式
。在Normal模式下輸入
i
進入Insert模式,輸入Esc
返回Normal模式。(當然有非常多的方法進入編輯模式,如輸入a
,o
等,此處不過多說明)。1)增
確保是在Insert模式下,通過鍵盤輸入內容即可。
[注意] 如何識別當前是在什么模式下?狀態欄可以看的,或者鍵盤輸入看。
2)刪
刪除,跟其他編輯器的操作不同(其他編輯器是先選定,然后Delete、或者Backspace)。
在vi中的刪除是在Normal模式下,通過
x
刪除一個字符,通過dd
刪除光標所在行。3)改
所謂“改”,無外乎先刪除,再輸入。我們通過1)和2)組合實現。
好吧,這里還是學一點吧: 在Normal模式下輸入
cw
,可以替換一個“單詞”。4)查
vi打開的文件,如果內容非常多,需要查詢,替換的時候,需要用到“查”。
在Normal模式下,輸入
/
,后跟需要查詢的內容,然后回車即可。 -
保存
保存是在命令模式下輸入 :w 即可,退出時命令模式下輸入 :q 。
3.進階學習vi
新手通過步驟2,初步掌握了vi的使用。進階學習,需要掌握(切記下面所有的都是在Normal模式):
-
初級光標的移動
你可能會有疑問,新手不需要移動光標?當然需要了,只不過默認通過“上、下、左、右”箭頭移動即可。其實vi中,為了更加高效,是通過
h j k l
來移動光標的。 -
高級光標的移動
比如數字0移動到行的開頭,$移動到當前行的行尾,^移動到本行第一個非空字符,
-
各種進入
Insert
模式的方法比如在光標后插入
a
,在當前行下面新增一行的o
,在當前行上面新增一行的shift + o
,或者輸入cw
替換一個word
。 -
查找和替換
-
復制、粘貼
復制通過
yy
,粘貼是p
。靈活掌握,比如我們知道
dd
是刪除當前行,光標定位到目標位置后,接着按鍵p
是可以粘貼的。比如
3dd
是重復執行dd
三次,不一而足。 -
光標的定位
:N
,比如:100
,表示光標定位到第100行。在此,需要思考,總共只有10行,會怎么樣?gg
相當於是:1
G
定位到最后一行 -
區域選擇、塊操作、可視化選擇
......
4.總結
對於新手來說10分鍾入門vi不吃虧,對於已經入門需要進階,請自行學習:
-
Learn Vim Progressively 個人認為這個是有史以來最好的vi教程,沒有之一。
-
對於新手,也可以通過vimtutor來學習
方法就是,“用”起來就會了。雖然我用的是windows 10系統,我開發中,vs code和IntelliJ IDEA、visual studio都啟用了vi的。
有圖有真相:
加油,我相信你也可以入門,並成為vi專家的!