由於 Vim 學習曲線極為陡峭,導致許多初學者往往在剛剛開始的時候便放棄了學習,十分可惜,本文旨在以最無痛的方式帶領讀者初嘗一下 Vim 的滋味。
如何退出 Vim
上圖搜索結果有些尷尬,所以,當我們不小心打開 Vim 後該怎麼關閉呢?
按一下 Esc(當然,如果你不確定的話,可以多按幾下) 然後直接輸入 :q!(應該會顯示在你的屏幕左下角),然後 Enter,好了,應該已經退出了。
Vim 的模式
先解釋一下上述操作中為什麼需要按幾下 Esc,Vim 中從任何模式到 普通模式 的轉換是通過 Esc 完成的,而對於文件的操作(例如保存,保存並退出)是通過 命令模式 完成的,出於簡單理解考慮,我們只需要認為在普通模式下按一下 : 之後就算進入了命令模式,如果想回到普通模式的話就按 Esc 就好了,和駕駛汽車一樣,如果不確定自己在做什麼時候,踩剎車(按 Esc)就好了。
Vim 有3個模式,insert(插入),normal(普通),command(命令),在 insert 模式下 Vim 除了不能使用鼠標以外其餘的操作和一個普通的文本編輯器無異,normal 模式一般用於在文件中移動,複製行等等,command 模式一般就是對於文件的操作或者替換之類的。
Vim 的工作方式不同於常規的編輯器,在常規的編輯器下對應到 Vim 中就是一直使用 insert 模式進行操作,但是 Vim 並不是這樣設計的,在 Vim 下的操作流程為:打開 Vim(默認為 normal 模式)-> 快速移動到自己需要的位置 -> 進入 insert 模式修改少部分文本 ->(按 Esc)回到 normal 模式尋找下一個需要編輯的地方 -> 進入 insert 模式修改...,請仔細理解這個過程。
對於文件的基本操作
在普通模式下:
- :x 和 :wq 表示保存並退出
- :q! 表示不保存並退出(等同於點了退出並且選擇“不保存”)
- :w 表示保存
熟悉文件怎麼打開關閉了?我們來看看一些 Vim 的基礎使用方式。
在普通模式下:
- hjkl -> 上下左右的光標移動,我理解對於 Vim 新手來說這樣可能有點彆扭,但是如果希望提升自己的 Vim 水平的話,請嘗試熟悉這種移動方式並且內心堅信這樣子終將提升效率
- dd -> 刪除當前行
- yy -> 複製當前行
- p -> 粘貼
- o -> 在光標下方開一個新行
- O -> 在光標上方開一個新行
- u -> 撤銷(等同於其它編輯器中的 Ctrl-Z)
- Ctrl-r -> 反撤銷(等同於 Undo 一個撤銷操作)
再熟悉了以上操作之後我們開始修改文件吧,如果希望在光標處進入 insert 模式的話,按 i,如果希望直接在當前行尾開始編輯的話,按 A,如果希望在當前行首開始編輯的話,先按數字 0 快速到行首,然後按 i 開始編輯,我理解這裡按 Home 也可以做到,但是這是 Vim ,讓我們用 Vim 的方式來,做完一處修改後請儘快按 Esc 回到 normal 模式,需要的話再順手 :w 保存一下吧~
看,Vim 也並不是如此難用不是?
小技巧
上面我們介紹了一些 Vim 的基礎操作,對於我們程序員來說,下面介紹一個非常簡單但是使用的小技巧,或許可以更好地感受到 Vim 做事的方式。
假設你是一名 Python 程序員,需要給多行設置縮進的話,我們一般怎麼做呢? 用 IDE 的同學一般是這樣做的:一隻手離開鍵盤找到鼠標,選定一塊代碼,按 Tab,然後再把手放回鍵盤繼續編輯。 在 Vim 中操作如下:首先確認自己在 normal 模式,按 v,然後按 j 或者 k 選定一塊。
然後按一下 > 或者 < 即可完成縮進或反縮進了,看上去非常簡單,但是少了手離開鍵盤的動作,在大量的編輯中便提升了效率。
後記
Vim 本身就是一個強大且學習曲線很陡的編輯器,掌握 Vim 不容易,但是當慢慢熟練使用 Vim 了之後在日常編輯中帶來的開發效率提升是非常顯著的。
Vim 熟練程度的提升需要大量的練習和使用,單單是 normal 模式下的光標移動便需要長時間的使用形成肌肉記憶才會又很好的效果,此外,當 Vim 加上了各種插件(例如:自動補全)後,又能帶來不一樣的用戶體驗。
閱讀更多 領釦網 的文章