歡迎光臨
每天分享高質量文章

Vim 入門:基礎 | Linux 中國

為工作或者新專案學習足夠的 Vim 知識。

— Bryant Son

 

我還清晰地記得我第一次接觸 Vim 的時候。那時我還是一名大學生,計算機學院的機房裡都裝著 Ubuntu 系統。儘管我在上大學前也曾接觸過不同的 Linux 發行版(比如 RHEL —— Red Hat 在百思買出售它的 CD),但這卻是我第一次要在日常中頻繁使用 Linux 系統,因為我的課程要求我這樣做。當我開始使用 Linux 時,正如我的前輩和將來的後繼者們一樣,我感覺自己像是一名“真正的程式員”了。

真正的程式員,來自 xkcd[1]

學生們可以使用像 Kate[2] 一樣的圖形文字編輯器,這也安裝在學校的電腦上了。對於那些可以使用 shell 但不習慣使用控制檯編輯器的學生,最流行的選擇是 Nano[3],它提供了很好的互動式選單和類似於 Windows 圖形文字編輯器的體驗。

我有時會用 Nano,但當我聽說 Vi/Vim[4] 和 Emacs[5] 能做一些很棒的事情時我決定試一試它們(主要是因為它們看起來很酷,而且我也很好奇它們有什麼特別之處)。第一次使用 Vim 時嚇到我了 —— 我不想搞砸任何事情!但是,一旦我掌握了它的訣竅,事情就變得容易得多,我就可以欣賞這個編輯器的強大功能了。至於 Emacs,呃,我有點放棄了,但我很高興我堅持和 Vim 在一起。

在本文中,我將介紹一下 Vim(基於我的個人經驗),這樣你就可以在 Linux 系統上用它來作為編輯器使用了。這篇文章不會讓你變成 Vim 的專家,甚至不會觸及 Vim 許多強大功能的皮毛。但是起點總是很重要的,我想讓開始的經歷盡可能簡單,剩下的則由你自己去探索。

第 0 步:開啟一個控制檯視窗

在使用 Vim 前,你需要做一些準備工作。在 Linux 作業系統開啟控制檯終端。(因為 Vim 也可以在 MacOS 上使用,Mac 使用者也可以使用這些說明)。

開啟終端視窗後,輸入 ls 命令列出當前目錄下的內容。然後,輸入 mkdir Tutorial 命令建立一個名為 Tutorial 的新目錄。透過輸入 cd Tutorial 來進入該目錄。

Create a folder

這就是全部的準備工作。現在是時候轉到有趣的部分了——開始使用 Vim。

第 1 步:建立一個 Vim 檔案和不儲存退出

還記得我一開始說過我不敢使用 Vim 嗎?我當時在害怕“如果我改變了一個現有的檔案,把事情搞砸了怎麼辦?”畢竟,一些電腦科學作業要求我修改現有的檔案。我想知道:如何在不儲存更改的情況下開啟和關閉檔案?

好訊息是你可以使用相同的命令在 Vim 中建立或開啟檔案:vim ,其中  表示要建立或修改的標的檔案名。讓我們透過輸入 vim HelloWorld.java 來建立一個名為 HelloWorld.java 的檔案。

你好,Vim!現在,講一下 Vim 中一個非常重要的概念,可能也是最需要記住的:Vim 有多種樣式,下麵是 Vim 基礎中需要知道的的三種:

< 如顯示不全,請左右滑動 >
樣式 描述
正常樣式 預設樣式,用於導航和簡單編輯
插入樣式 用於直接插入和修改文字
命令列樣式 用於執行如儲存,退出等命令

Vim 也有其他樣式,例如可視樣式、選擇樣式和命令樣式。不過上面的三種樣式對我們來說已經足夠用了。

你現在正處於正常樣式,如果有文字,你可以用箭頭鍵移動或使用其他導航鍵(將在稍後看到)。要確定你正處於正常樣式,只需按下 esc (Escape)鍵即可。

提示: Esc 切換到正常樣式。即使你已經在正常樣式下,點選 Esc 只是為了練習。

現在,有趣的事情發生了。輸入 : (冒號鍵)並接著 q! (完整命令::q!)。你的螢幕將顯示如下:

Editing Vim

在正常樣式下輸入冒號會將 Vim 切換到命令列樣式,執行 :q! 命令將退出 Vim 編輯器而不進行儲存。換句話說,你放棄了所有的更改。你也可以使用 ZQ 命令;選擇你認為更方便的選項。

一旦你按下 Enter (回車),你就不再在 Vim 中。重覆練習幾次來掌握這條命令。熟悉了這部分內容之後,請轉到下一節,瞭解如何對檔案進行更改。

第 2 步:在 Vim 中修改並儲存

透過輸入 vim HelloWorld.java 和回車鍵來再次開啟這個檔案。你可以在插入樣式中修改檔案。首先,透過 Esc 鍵來確定你正處於正常樣式。接著輸入 i 來進入插入樣式(沒錯,就是字母 i)。

在左下角,你將看到 -- INSERT --,這標志著你這處於插入樣式。

Vim insert mode

寫一些 Java 程式碼。你可以寫任何你想寫的,不過這也有一份你可以參照的例子。你的螢幕將顯示如下:

  1. public class HelloWorld {
  2. public static void main([String][11][] args) {
  3. }
  4. }

非常漂亮!註意文字是如何在 Java 語法中高亮顯示的。因為這是個 Java 檔案,所以 Vim 將自動檢測語法並高亮顏色。

儲存檔案:按下 Esc 來退出插入樣式併進入命令列樣式。輸入 : 並接著 x! (完整命令::x!),按回車鍵來儲存檔案。你也可以輸入 wq 來執行相同的操作。

現在,你知道瞭如何使用插入樣式輸入文字並使用以下命令儲存檔案::x! 或者 :wq

第 3 步:Vim 中的基本導航

雖然你總是可以使用上箭頭、下箭頭、左箭頭和右箭頭在檔案中移動,但在一個幾乎有數不清行數的大檔案中,這將是非常困難的。能夠在一行中跳躍游標將會是很有用的。雖然 Vim 提供了不少很棒的導航功能,不過在一開始,我想向你展示如何在 Vim 中到達某一特定的行。

單擊 Esc 來確定你處於正常樣式,接著輸入 :set number 並鍵入回車。

瞧!你現在可以在每一行的左側看到行號。

Showing Line Numbers

好,你也許會說,“這確實很酷,不過我該怎麼跳到某一行呢?”再一次的,確認你正處於正常樣式。接著輸入 :,在這裡  是你想去的那一行的行數。按下回車鍵來試著移動到第二行。

  1. :2

現在,跳到第三行。

Jump to line 3

但是,假如你正在處理一個一千多行的檔案,而你正想到檔案底部。這該怎麼辦呢?確認你正處於正常樣式,接著輸入 :$ 並按下回車。

你將來到最後一行!

現在,你知道如何在行間跳躍了,作為補充,我們來學一下如何移動到一行的行尾。確認你正處於有文字內容的一行,如第三行,接著輸入 $

Go to the last character

你現在來到這行的最後一個位元組了。在此示例中,高亮左大括號以顯示游標移動到的位置,右大括號被高亮是因為它是高亮的左大括號的匹配字元。

這就是 Vim 中的基本導航功能。等等,別急著退出檔案。讓我們轉到 Vim 中的基本編輯。不過,你可以暫時順便喝杯咖啡或茶休息一下。

第 4 步:Vim 中的基本編輯

現在,你已經知道如何透過跳到想要的一行來在檔案中導航,你可以使用這個技能在 Vim 中進行一些基本編輯。切換到插入樣式。(還記得怎麼做嗎?是不是輸入 i ?)當然,你可以使用鍵盤逐一刪除或插入字元來進行編輯,但是 Vim 提供了更快捷的方法來編輯檔案。

來到第三行,這裡的程式碼是 public static void main(String[] args) {。雙擊 d 鍵,沒錯,就是 dd。如果你成功做到了,你將會看到,第三行消失了,剩下的所有行都向上移動了一行。(例如,第四行變成了第三行)。

Deleting A Line

這就是刪除delete命令。不要擔心,鍵入 u,你會發現這一行又回來了。喔,這就是撤銷undo命令。

Undoing a change in Vim

下一課是學習如何複製和貼上文字,但首先,你需要學習如何在 Vim 中突出顯示文字。按下 v並向左右移動游標來選擇或反選文字。當你向其他人展示程式碼並希望標識你想讓他們註意到的程式碼時,這個功能也非常有用。

Highlighting text in Vim

來到第四行,這裡的程式碼是 System.out.println("Hello, Opensource");。高亮這一行的所有內容。好了嗎?當第四行的內容處於高亮時,按下 y。這就叫做複製yank樣式,文字將會被覆制到剪貼簿上。接下來,輸入 o 來建立新的一行。註意,這將讓你進入插入樣式。透過按 Esc 退出插入樣式,然後按下 p,代表貼上paste。這將把複製的文字從第三行貼上到第四行。

Pasting in Vim

作為練習,請重覆這些步驟,但也要修改新建立的行中的文字。此外,請確保這些行對齊工整。

提示: 您需要在插入樣式和命令列樣式之間來回切換才能完成此任務。

當你完成了,透過 x! 命令儲存檔案。以上就是 Vim 基本編輯的全部內容。

第 5 步:Vim 中的基本搜尋

假設你的團隊領導希望你更改專案中的文字字串。你該如何快速完成任務?你可能希望使用某個關鍵字來搜尋該行。

Vim 的搜尋功能非常有用。透過 Esc 鍵來進入命令樣式,然後輸入冒號 :,我們可以透過輸入 / 來搜尋關鍵詞,  指你希望搜尋的字串。在這裡,我們搜尋關鍵字串 Hello。在下麵的圖示中沒有顯示冒號,但這是必須輸入的。

Searching in Vim

但是,一個關鍵字可以出現不止一次,而這可能不是你想要的那一個。那麼,如何找到下一個匹配項呢?只需按 n 鍵即可,這代表下一個next。執行此操作時,請確保你沒有處於插入樣式!

附加步驟:Vim 中的分割樣式

以上幾乎涵蓋了所有的 Vim 基礎知識。但是,作為一個額外獎勵,我想給你展示 Vim 一個很酷的特性,叫做分割split樣式。

退出 HelloWorld.java 並建立一個新檔案。在控制檯視窗中,輸入 vim GoodBye.java 並按回車鍵來建立一個名為 GoodBye.java 的新檔案。

輸入任何你想輸入的讓內容,我選擇輸入 Goodbye。儲存檔案(記住你可以在命令樣式中使用 :x! 或者 :wq)。

在命令樣式中,輸入 :split HelloWorld.java,來看看發生了什麼。

Split mode in Vim

Wow!快看!split 命令將控制檯視窗水平分割成了兩個部分,上面是 HelloWorld.java,下麵是 GoodBye.java。該怎麼能在視窗之間切換呢?按住 Control 鍵(在 Mac 上)或 Ctrl 鍵(在 PC 上),然後按下 ww (即雙擊 w 鍵)。

作為最後一個練習,嘗試透過複製和貼上 HelloWorld.java 來編輯 GoodBye.java 以匹配下麵螢幕上的內容。

Modify GoodBye.java file in Split Mode

儲存兩份檔案,成功!

提示 1: 如果你想將兩個檔案視窗垂直分割,使用 :vsplit 命令。(代替 :split  命令, 指你想要使用分割樣式開啟的檔案名)。

提示 2: 你可以透過呼叫任意數量的 split 或者 vsplit 命令來開啟兩個以上的檔案。試一試,看看它效果如何。

Vim 速查表

在本文中,您學會瞭如何使用 Vim 來完成工作或專案,但這隻是你開啟 Vim 強大功能之旅的開始,可以檢視其他很棒的教程和技巧。

為了讓一切變得簡單些,我已經將你學到的一切總結到了 一份方便的速查表[6] 中。

 

已同步到看一看
贊(0)

分享創造快樂