[TOC]html
Vim 是從 vi 發展出來的一個文本編輯器。其代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被普遍使用。和 Emacs 並列成爲類 Unix 系統用戶最喜歡的編輯器。vue
—— 維基百科程序員
不少接觸 Vim 的程序員應該都有過這樣的經歷:正則表達式
我爲何知道這種狀況?由於我也一遍有一遍的嘗試想把 Vim 做爲個人主力編輯器,每一次都是傷痕累累的滾回 sublime 了。分析這裏面的緣由其實只有一個:我太想用它來裝 X 了,太想感覺那種輕飄飄的虛榮感受,尚未認識到「世界上有 3 類程序員:用 Vim 的程序員,用 Emacs 的程序員,用其餘編輯器的程序員」 這句話並非裝出來的,Vim 真的能夠大幅提升工做效率。編程
若是一個工具真的能夠在之後長時間內大幅提升效率,那麼花一小點時間,慢慢的使用、進階絕對是個划得來的生意。並且,有時候咱們不得不在生產環境中直接面對 Vim, 這種時候一般是緊急的狀況(服務器發生故障等),若是對 Vim 不熟悉,那隻能是兩眼一抹黑了。vim
大部分人放棄 Vim 可能都是出於這樣的緣由:指望太高,追求速成。而本文的目的只在於善意的提醒你:慢一點,別放棄。安全
追求速成的同窗在初次接觸 Vim 時一般活不過 30 分鐘,太不友好了!!!那爲何 Vim 能夠提升工做效率?它的設計初衷就可讓你的手指不離開鍵盤進行全部的操做。服務器
活下來須要注意的事情很簡單,認清 Vim,使用最簡單的指令,就跟咱們學吉他同樣,先看看買的琴,弄清楚 Do Rei Mi 在哪一個地方能夠演奏出來就能夠了,一般來講咱們要流暢的彈出 1 2 3 4 5 6 7 i
須要一段時間,可是第一次彈奏出來之後會很開心。這個時候並不須要瞭解什麼是把位,怎麼切換把位。markdown
經過 vim filename
進入 Vim 之後,不能編輯文本,這時候 Vim 在 Normal 模式下。正如一些筆記軟件默認是不開放編輯的,只有點了編輯按鈕才能輸入,而像 Sublime 這樣的編輯器,你只要打開了某個文件,隨時均可以輸入。這樣固然提供了便利性,可是很容易形成誤操做,改變文件內容和狀態。app
i
就能夠進入 Insert 模式,i
你能夠理解爲是此模式的縮寫。此時下面會出現插入
字樣;Esc
退出 Insert 模式,回到 Normal 模式在 Normal 模式下,學會如下內容就入門了:
i
進入 insert 模式,編輯內容;x
dd
p
wq
基本上以上操做足以讓咱們完成不少的操做內容,現階段須要作的是將這些指令訓練成肌肉記憶,能夠天天刻意用 Vim 來寫日記,編輯一些文檔,或者訓練不用自動補全和提示寫代碼的能力。
稍微熟練之後將光標鍵換成hjkl
進行移動,這樣更符合手放在鍵盤上的位置,若是不記得哪一個鍵是作什麼用的,輸入:help 鍵名
尋求幫助。養成一個習慣,insert 模式下編輯完,只要有可能作其餘事情,有事沒事按按 Esc
退回 Normal 模式來保證數據的安全。若是有必要,藉助鼠標操做。
在生存階段的命令沒有到肌肉記憶的程度時,儘可能不要逼本身學習過多的命令,欲速則不達,好東西都須要慢慢享受。Vim 在 Normal 模式下,全部鍵都會變成命令執行對應的指令。
^
行首;$
行尾;:3
跳到第 3 行;G
跳到最後一行;:/string
定位文字,string
就是要定位的文字,能夠是正則表達式。當查找到多個結果時,n
鍵切換到下一個;w
下一個單詞首;*
下一個相同的單詞,#
上一個相同的單詞;%
專門用來匹配括號的。編程語言不少不知道本身處於哪個括號內。以前咱們說過 i
能夠切換到 insert 模式,實際上還有其餘鍵也能夠:
a
在光標後一位插入,一般用在行末的時候;o
在下一行插入;O
在上一行插入;除了 :wq
還有其餘操做:
:q!
不保存強制退出;:w path_of_filename
保存爲 filename 的文件;:saveas path_of_filename
另存爲;:e another_file
打開另外一個文件::n 或者加file/tab鍵觀察
打開下一個文件,若是加 file 開指定的文件,能夠用 tab 鍵觀察補全u
undo,回撤Ctrl + r
redo,前進.
作大量重複工做的利器,表示執行上一個指令;5.
重複執行上一個指令 5 次;5<command>
重複執行 command 這個指令 5 次到目前爲止,主流編輯器的基本功能 Vim 經過鍵盤基本上都實現了,對於塊級操做,命令存在自然的劣勢,畢竟鼠標長按一下能夠選擇太多的區域,Vim 的塊級操做一樣不復雜:
Ctrl + v
進入塊級操做;I + --
, 操做。I
進入插入模式,插入 --
;命令 v 和 V 表示可視選擇,若是咱們須要對一段代碼左右縮進:
> 或者 <
, 分別表示右縮進和左縮進在 insert 模式下,可使用 ctrl + p
自動補全。
:vs file
水平開一個文件:sp file
垂直開一個文件這個階段我直接放棄了。不行了,白頭髮出來了。
可自行搜索。。。