想像一下,你深陷於你的Linux系統中,拼命地嘗試編輯一個檔案,每次嘗試都像是解讀古老密碼一樣。如果你點來點去越點越迷失,為什麼不轉向使用Linux上的Vim呢?
在這個教程中,你將揭開Vim的秘密,這是一個廣受好評的文字編輯器,讓你從一個Linux漫遊者轉變為一個指令行高手。
拿起你的象徵性劍(也就是你的鍵盤),踏上Vim的世界吧!
先備條件
以下是一些先備條件,為你在Linux系統上精通Vim做好準備:
- A Linux OS – This tutorial uses an Ubuntu 22.04 LTS.
使用Vim在Linux上創建和編輯檔案
Vim有不同的模式,每個模式都提供獨特的編輯能力。但在進入這些模式之前,你首先需要學習如何在Linux上使用Vim創建和編輯檔案。
按照以下步驟來創建和編輯一個檔案:
1. 在終端機中執行以下vim
命令來創建一個名為sshd_config
(任意)的文件。如果該文件不存在,此命令將自動創建該文件。否則,將打開現有文件。
如果您創建了一個新文件,Vim的界面看起來像下面的示例,這表示Vim目前處於命令模式。命令模式是您在Vim編輯器中與文本交互的主要模式之一。

2. 接下來,將下面的文本複製到剪貼板中,該文本包含純粹用於演示的樣本SSH服務器設置,並不反映實際的服務器配置。
3. 在Vim中,按下i
,進入插入模式的命令。插入模式也是Vim的主要模式之一,它允許您輸入並修改文檔的內容。
一旦進入插入模式,狀態行將顯示— INSERT —,如下所示。

4. 現在,按下Ctrl+Shift+V或Shift+Insert將您在第二步中複製的文本粘貼到Vim編輯器中,然後按Esc退出插入模式(切換到命令模式)。
請注意,— INSERT —狀態消失,這表示您又回到了命令模式。

5. 最後,輸入:w
命令並按Enter保存對文件的更改,而不關閉編輯器。
必要時,您可以執行下面的其他命令:
Command | Details |
---|---|
:q! |
Quit the editor without saving the changes. |
:w! |
Write the current file changes forcefully. |
:wq |
Save the changes and quit the editor (or :wq! to save and quit forcefully). |
e! |
Revert to the last saved version of the file. |

狀態列顯示寫入文件的數據大小,這裡是23行(23L)和624字節(624B)。

在Vim中導航文本
掌握使用Vim創建和編輯文件後,您將深入研究一項關鍵技能,這將提升您的文本編輯能力-在Vim中導航。有效的導航是解鎖Vim潛力的關鍵,就像探索廣闊的風景一樣。
繼續閱讀以下關於在Vim中導航文本的步驟:
1. 現在,輸入 :set nu
命令,然後按Enter鍵,在Vim上啟用行號。行號是處理代碼或大型文檔時的關鍵編輯器功能。
如果成功,您將在編輯器中看到行號,如下所示。

2. 接下來,切換到命令模式(Esc
),然後按 gg
命令跳轉到文件的開頭。

3. 繼續按以下任意命令,直到達到 MaxSessions 參數的開頭,然後按 $
將游標移動到行的末尾。
Command | Details |
---|---|
h |
Move the cursor to the left or the previous character. |
j |
Move the cursor one line down. |
k |
Move the cursor one line up. |
l |
Move the cursor to the right or the next character. |

4. 現在,用以下內容替換一段文本:
- 按
i
切換到插入模式。 - 刪除值(退格鍵或刪除鍵),即 10,然後替換為 25。
- 切換到命令模式(
Esc
)並保存更改(:w
)。

在特定位置插入文本
Vim提供了一系列命令,可以精确控制插入新文本的位置和方式(恰好在您需要的位置)。无论您希望在一行的开头、当前光标位置之后还是一行的末尾插入,该功能都能正常工作。
为了了解如何在特定位置插入文本,执行以下操作:
1. 当光标位于行末时,按下I
(Shift+I)进入插入模式,并同时将光标定位在行的开头。

2. 切换到命令模式(Esc
),将光标移动到当前行文本中的任意其他字符(即开头处),然后按下a
命令。
该命令将Vim切换到插入模式,并将光标定位在前一个位置的下一个字符上。这个行为非常方便,可以在不破坏现有文本的情况下快速添加文本到一行的中间位置。

3. 输入‘y’以将MaxSession键拼写为MyaxSession,如下所示,并返回到命令模式(Esc
)。
您会注意到新字符‘y’立即出现在第一个字符之后。

4. 现在,按以下方式修改文本行:
- 按下Shift+A执行
A
命令,这使Vim进入插入模式,并将光标移动到行的末尾。这个行为非常适合快速添加内容,比如分号或者结束一个句子。 - 在行末附加0,将值更改为250。
- 返回命令模式(`Esc`),並保存更改(`:w`)。

開啟新行
現在,您已經掌握了在Vim文件中策略性地放置文本,是時候探索一個能夠保持您內容結構良好並有組織的技能了。在Vim中開啟新行的能力是讓您的文本更易讀和美觀的關鍵。
要在上方或下方開啟新行,請完成以下步驟:
1. 在命令模式下,按下`o`鍵在當前文本行下方開啟一個新行,並添加關於MyaxSessions的以下註釋。

2. 切換到命令模式(按`Esc`鍵),將游標移動到另一行文本上,然後按`O`(Shift+O)在當前文本行上方添加一個新行。

3. 現在,將以下命令添加到文件中並保存更改(`:w`)。

刪除單詞和文本行
Vim提供了有效的命令來刪除和替換文本,超出了基本的刪除或退格鍵。這些命令可以從命令模式訪問,使您能夠快速進行修改和更正,從而可以刪除或替換字符、單詞或整行。
要在Linux的Vim中刪除和替換文本,執行以下操作:
1. 把游標移到MyaxSessions參數,具體位置在 ‘ y ‘ 字元上。

2. 接著,按下 x
鍵即可立即移除游標下的字元,這個例子中是 ‘ y ‘。
該參數恢復到原始文本MaxSessions,如下所示。

3. 把游標移到行 PermitRootLogin no:。

4. 現在,按下 "_dd
鍵刪除整行文字,不論游標位置在哪。
命令中的 "_
指定黑洞寄存器,將刪除的文字丟棄(不會存儲在任何寄存器中)。
Vim有自己的一套 寄存器 用於存儲文字,不指定黑洞寄存器會導致命令切割文本而不是刪除它。
成功後,你會注意到 PermitRootLogin no: 行不見了。

5. 在命令模式下,把游標放在行 Specifies 中單詞的開頭。

6. 最後,執行 "_dw
命令,刪除單詞 Specifies 如下所示:

此外,你還可以選擇使用以下命令進行額外的刪除操作:
Command | Details |
---|---|
"_d$ |
Delete texts from the cursor position to the end of the line. |
"_D |
Deletes from the cursor position to the end of the line. |
"_d^ |
Deletes from the cursor position to the first non-whitespace character of the line |
"_dgg |
Deletes from the cursor position to the beginning of the file. |
"_dG |
Deletes from the cursor position to the end of the file. |
替換字符和文本行
從Vim中的策略性刪除,轉而將注意力轉向硬幣的另一面——替換字符和文本行。替換是使您能夠精確調整和重新定義文本的筆觸。好消息是,Vim允許您執行一次性字符替換或整行文本。
要替換字符和文本行,請繼續執行以下任務:
1. 將光標定位在行AuthorizedKeysFile .ssh/authorized_keys上,特別是在下面所示的“z”字符的authorized中:

2. 一旦定位,按r
,告訴Vim您將替換光標下的字符,並輸入“s”字符。 r
命令允許您在進入插入模式(i
)之前替換字符。
請注意,在authorized中,“z”字符已被替換為“s”字符,將單詞更改為authorised。

3. 接下來,將光標放在AuthorizeKeysFile中的字符“’z’”。

4. 按下R
(Shift+R)進入替換模式,輸入“s”以替換字符,但不要退出替換模式。
與只允許替換一個字符的r
命令不同,R
命令允許您在持續輸入時覆蓋現有文本。

5. 最終,將以下文本複製到剪貼板中,將光標移動到文件的開頭,並粘貼您複製的文本(Ctrl+Shift+V或Shift+Insert)。
由於您仍處於替換模式,粘貼文本將替換文件中的第一行。

在文件中搜索文本
在重做或撤消操作中涉及時,搜索文件中的文本技巧非常方便。Vim允許您在文件中搜索特定的單詞、短語或模式。
想像一下,當您可以迅速定位並操作特定文本部分而不是盲目地滾動時,生產力的飛躍提升。
要在文件中搜索文本,請按照以下步驟進行:
1. 將光標移動到文件的開頭(使用gg
命令),按下/
(斜杠)進入搜索模式,輸入搜索詞log,然後按Enter鍵。
此命令將搜索指定的詞(log),將光標向前移動到該詞的下一個出現位置。

2. 接下來,按下n
移動到該詞的下一個出現位置。

3. 現在,按下N
(Shift+N)返回到上一個出現位置。

此外,Vim還提供其他搜索快捷鍵,以增加搜索靈活性:
Command | Details |
---|---|
? |
Initiates a reverse search of a term. |
* |
Performs a forward search for the word under the cursor. Continue pressing * to cycle through further occurrences of the word until it loops back to the first instance. |
# |
Performs a backward search for the word under the cursor. Continuously pressing # works similarly to the * command but cycles until it loops back to the last instance. |
將搜索與Vim的其他命令結合使用
當您在Vim中瀏覽複雜的景觀時,為何不在文本編輯的技巧中再增加一個層次 —— 將搜索與其他命令結合使用?
Vim 讓您從替換特定出現次數到刪除匹配模式的行動。
要在 Vim 中見證搜索和操作之間的協同作用,請執行以下操作:
1. 在命令模式下,將游標放在您想要開始刪除的起始點(即搜索詞 log 的第一個出現位置)

2. 接下來,輸入 d/log
並按 Enter 鍵,刪除從游標位置到下一個 log 出現位置的所有內容,如下所示:

3. 撤銷上一個操作(u
命令),將游標放在搜索詞 log 的第一個出現位置。

4. 現在,執行以下命令來搜索和替換指定範圍內的文本,其中:
:.
– 在當前行(.
)輸入命令模式(:
)。,$
– 指定替換的範圍。s/log/logs/g
– Substitute all occurrences of the old word (log
) with new (logs
) globally (g
) within the specified range.

在 Vim 的可視模式中選擇文本
除了在 Vim 中將搜索技術與其他命令混合使用之外,您還必須揭示一個功能,該功能可以改變您的文本編輯體驗。 Vim 的可視模式允許您更加互動和可視地操作文本。 可視模式提供了一種靈活和高效的方法,用於突出顯示和操作文本的部分。
要選擇和編輯文本,您可以選擇選擇和編輯個別字符或選擇和編輯文本塊,方法如下:
1. 移動游標至文件開頭(gg
命令),按下v
以啟動視覺模式,如下所示。

2. 按下$
以將游標移到該行的末尾。由於您處於視覺模式,此命令會突顯該行文本。

3. 現在,執行以下複製和粘貼操作:
- 按下
y
將突顯的文本複製到Vim的寄存器中。 - 按下
G$
將游標移到文件中最後一行的末尾。 - 按下
p
以粘貼您複製的文本(特別是在游標後)。
請注意,p
命令與粘貼文本的快捷鍵(Ctrl+Shift+V或Shift+Insert)不同。當您使用y
命令複製文本時,文本會存儲在Vim的寄存器中,p
命令則從寄存器中粘貼文本。


4. 撤消(u
)您之前的操作,將游標移動到文件開頭(gg
),並按下V
(Ctrl+V)以進入視覺行模式。
與在視覺模式中選擇單行不同,視覺行模式允許您選擇多行文本,這將在下一步中看到。

5. 使用向下箭頭鍵選擇從文件開頭到協議 2行的字符。

6. 按下d
以刪除所選的多行文本。

7. 最後,按照以下方式粘貼您在第六步中切割的文本:
- 移動到文件中的最後一行(
G
),在其下創建一個新行(o
)。 - 返回到命令模式(
Esc
),並粘貼文本(p
)。

結論
恭喜!您已經探索了Vim for Linux的精細領域,並在這個過程中解鎖了一個文本編輯智慧的寶庫。從創建和編輯文件到掌握視覺模式的藝術,您已經戴上了Vim大師的帽子。
但是,您的命令行冒險才剛剛開始。為什麼不探索像宏和插件一樣的高級功能,以定製Vim滿足您的需求?
利用這些基礎技能來探索Vim的更深層次,例如文件管理、複雜的搜索模式和用於個性化的Vim腳本。