jas0nhuang

Vim - 01 - 跨出第一步

Vim 源自遠古時代的 Vi 編輯器,當時電腦圖形化介面、滑鼠還不普及,大家在電腦上工作就是用鍵盤,所以 Vim 最主要的一個使用概念就是「模式」切換,將文件管理、指令、文字輸入……等等,分開處理。
對於用習慣滑鼠的現代人來說,不用按滑鼠,完全用打鍵盤來處理文字的 Vim 其實是很新奇的,而且真正習慣之後會發現,文件編輯的速度更快,右手也不會因為一直要去抓滑鼠而覺得痠痛,打字的時候基本只需要移動手指,幾乎不會動到手腕,搭配電腦系統各種快速鍵,真的好用!
只是想要直接離開 Vim 然後也不想讀這篇文章的話,:q! 打下去就對了。珍重再見!

模式

Vim總共有12種模式,最基本也最常見到的是以下三種:
(從 2018 年 5 月 18 日,Vim 8.1 釋出之後,因為加入了 terminal 的功能,所以現在總共有 14 種模式了……)

  1. 一般模式(Normal mode):進入Vim時的預設模式,可以進行文件編輯但無法輸入文字。
  2. 插入模式(Insert mode):可以在Vim中輸入文字的模式。
    也有人翻成「編輯模式」我自已覺得翻成「輸入模式」比較好一點,因為在一般模式裡也可以編輯文檔,阿「插入」是要插什麼入?但是大部分中文翻譯的文章都是翻成,官網上連結的中文手冊也是翻成「插入」,所以我就按慣例使用吧!
  3. 命令模式(Command-line mode):可輸入指令,如:開啟文件、查看幫助文件、關閉Vim、設定環境……等等。

「插入模式」與「一般模式」

一進入 Vim 我們是身處「一般模式」中的,想要「插入」一些東西當然要要先進入插入模式,要隆重介紹第一個指令出場了!

i :進入插入(insert)模式

這樣我們就可以在 Vim 裡面打字了,打到一個段落,你不想再「插入」任何東西了,你文字編輯完成了,想要拍拍屁股走人,或是把檔案存下來,待在「插入模式」中你只能一直「插入」(好啦……輸入),其它事都不能做,所以還必須先學會怎麼離開「插入模式」回到「一般模式」,要鼓掌歡迎第二個指令出場了!(嗯……是不是每個指令都一定得這樣)

Esc 鍵:退出插入模式

對,按下 Esc 鍵,就離開插入模式回到一般模式了!有東西忘了輸入還想再輸入的話,再按下 i 又可以再次輸入了!
那剛剛不是說打字只要動指頭不用動手腕,這樣每次要從插入模式切到一般模式的時候手就要往左上方找Esc鍵做拉筋練習是怎樣?
其實只是因為 Esc 鍵 比較直覺,所以先跟大家介紹,其實 Esc 鍵 可以用 Ctrl+c 代替,Ctrl+c 在 Vim 裡不是一般用於「複製」的快速鍵,它被用來「退出」插入模式,其實就是Linux命令列中的「退出」快速鍵, 之後學到其它模式要「退出」時也可以用。

Ctrl + c:退出

慢步「一般模式」

雖然右下方的方向鍵在 Vim 功能一如往常,但是科技始終來自於惰性,所以對於一個「基客」而言,世上最遙遠的距離,不是生與死的距離,而是右手從 h j k l 移到方向鍵的距離!(甚至很多人還建議把上下左右鍵設定為不可用,強迫大家一定要用 h j k l,這其實就有點超過了。)
在 Vim 中 h j k l 被用來取代方向鍵,差異僅在毫秒之間,但是爽度大大提升!
當然,因為我們現在連門都還沒入,h j k l 就已經夠讓我們頭暈目炫,之後學會其它瞬間移動的指令像是 G0$……等等,h j k l 也就變成只是輔助的功能了。

h:左
j:下
k:上
l:右

進入「命令模式」

現在咱們會插入、退出、插入、再退出了,可以在插入模式中打字了,也可以在一般模式中行動自如了,但是還是處於掰咖半殘的狀態,沒辦法存檔、沒辦法開啟另一個檔案,想要閃人的時候也沒辦法退出,所以進入「命令模式」也是Vim基礎中的基礎!又要再一次隆重的介紹未來在你Vim人生中將被按下億萬次的按鍵出場啦!

::進入命令模式

就是這個簡單的「冒號」讓我們可以對Vim下命令。
想要離開Vim嗎?

:q:退出(quit)

想要存檔嗎?

:w:寫入/存檔(write)

想要把它當奴隸一樣強迫他做事情嗎?

!:強制命令

強制命令可在任意指令後加入,例如:

:q!:強制退出
:wq!:強制存檔並退出

恭喜您!右腳小指已伸入 Vim 大門

幾個讓你能在Vim裡生存的指令,讓你的右腳小指伸入 Vim 大門,都已經這麼努力的伸了一隻小指,就繼續努力吧! 這隻小指能做的事也已經足夠讓你直著進去,至少不必橫著出來了(通常這時候用完VIM都還是會有一種遍體鱗傷的感覺)。
在繼續努力之前,先復習一下你這隻小指能做些什麼偉大的事情吧:

i:進入插入(insert)模式
Ctrl+c:退出插入模式,退出其它模式
h:左
j:下
k:上
l:右
::進入命令模式
:q:退出(quit)
:w:寫入/存檔(write)
!:強制命令

Vim 的世界很有趣的,咱們下回見……