從第一次接觸vi/vim到如今已經十幾年了,在這個過程當中,來來回回,反反覆覆,學習vi不少次了。linux
雖然關於vi的使用,我還遠未達到「專家」的水平,但對於vi的使用,我有話說。vim
vi是一個編輯器,起源於unix,在linux中很是經常使用。關於vi的使用,網上有大量的教程,但質量參差不齊,很容易誤導「新手」。本文的價值在於,我走了十幾年的彎路,你能夠少走彎路。windows
每一個人學習vi的目的不同,學習過程和學習方法也好比不一樣。通常學習者分以下3種狀況:編輯器
新手級學習
新手要求不高,會用基本操做便可。本文經過10分鐘的學習,就能夠達到這個目標。spa
進階級命令行
大部分人目前處於這個階段,在本文的最後,將介紹如何從進階級步入專家級。3d
專家級unix
到這個階段,基本上能夠作到「信手拈來」,出神入化了。code
對於新手入門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 。
新手經過步驟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
定位到最後一行
區域選擇、塊操做、可視化選擇
......
對於新手來講10分鐘入門vi不吃虧,對於已經入門須要進階,請自行學習:
Learn Vim Progressively 我的認爲這個是有史以來最好的vi教程,沒有之一。
對於新手,也能夠經過vimtutor來學習
方法就是,「用」起來就會了。雖然我用的是windows 10系統,我開發中,vs code和IntelliJ IDEA、visual studio都啓用了vi的。
有圖有真相:
加油,我相信你也能夠入門,併成爲vi專家的!