在Linux系统中學習如何使用文字編輯器是無庸置疑的,因為每個系統管理員每天都必須處理配置(純文字)文件,大多數情況下這是完全使用命令行界面(如nano、vim或emacs)來完成的。
雖然nano可能更适合新用戶,但由於其進階功能,vim或emacs卻是經驗豐富的用戶的首選。
但还有一个原因让你必须把學習這些文字編輯器如何使用放在首位:你可能會遇到只支持CLI的服务器,或者在基於GUI的Linux服務器或桌上系統中遇到桌面管理器問題,而在這種情況下,唯一可以檢查並編輯配置文件的資源就是命令行。
在本文及下一篇這兩篇文章之間,我們將回顧15個提升你vim技能的小技巧。假設你已經熟悉這個文字編輯器。
如果還不熟悉vim,最好先了解一下:你可以參考如何使用 vim 文本編輯器,這是一個非常詳細的入門指南。
1. 在 Vim 中訪問線上幫助
啟動vim後,按下F1
或在ex模式下使用:h
進入線上幫助。您可以通過將游標放在特定部分或主題上,然後按Ctrl+]
(Ctrl
,然後是右方括號)跳轉到該部分或主題。
完成後,按下Ctrl+t
返回上一個畫面。或者,您可以使用:h <主題或命令>
查找特定主題或命令。
例如,
:h x
將顯示有關x (delete)命令的幫助:

而
:h substitute
將顯示關於substitute命令的幫助(本文最後一個提示)。
2. 在 Vim 編輯器中添加書籤
如果您發現自己正在編輯一個超過一個屏幕的文件,您將感謝標記提供的功能。您可以將vim中的標記視為書籤——一旦您將其放在某處,您就可以快速輕松地返回到該處。
假設您正在編輯一個300字的配置文件,出於某種原因,需要反复在第30行和第150行之間切換。
#30 行::30
進入ex模式,然後返回命令模式,按下ma(m,然後a)在第“a”行創建一個標記。
然後前往第250行(使用:250
在ex模式下),並按下`a
(反引號,然後a)返回到第“a”行。
您可以在vim中使用大小寫字母來識別標記(現在重複此過程,在第#250行創建一個名為A的標記)。
您可以使用
:marks aA

查看您的標記。正如您所看到的,每個標記都是通過文件上的特定行/列位置引用的,而不僅僅是通過行。
3. Vim中輕鬆進行代碼清理
假設您正在編輯一個shell腳本,並意識到先前的開發人員在縮排方面相當差勁。讓我們看看您可以如何使用幾個vim命令來修復它。
首先,通過將游標放在塊的開始處並按下Ctrl+v
(Ctrl,然後v)來選擇一個視覺塊。
- 要向左縮進:按下
<j
- 要向右縮進:按下
<j
然後按下.
(點)命令來重複任何縮進。所選塊將僅僅通過一個按鍵被向右或向左移動。
另一個使用 dot 命令的經典示例是當您需要刪除一系列單詞時:將光標放在您想刪除的第一個單詞上,然後按 dw。
要繼續刪除下一個單詞,只需按 .
(比重複按 dw 幾次更為簡短和方便)。
4. 在 Vim 中插入 Unicode 字符
如果您的鍵盤布局不允許您輕鬆在文件中插入特殊的 Unicode 字符,或者如果您發現自己面對的服務器的語言設置與您習慣的語言設置不同,這個技巧就會派上用場。
要做到這一點,在插入模式下按 Ctrl+v
,然後輸入字母 u
和您想要插入的字符的十六進制數字代碼。
您可以查看 Unicode 圖表 以獲得特殊字符及其相應數字代碼的列表。
例如,
Ctrl+v followed by | returns |
u0040 | @ |
u00B5 | μ |
u20AC | € |
5. 在 Vim 中嵌入外部命令輸出
有時您需要將外部命令的輸出直接插入正在使用 vim 編輯的文件中。
例如,我常常在我的腳本中創建一個名為 DIR
的變量,以存儲腳本所在目錄的絕對路徑,以便稍後在腳本中使用。
為了做到這一點,我使用:
:r! pwd
在 ex 模式中。 因此,當前工作目錄被插入。
另一个例子:如果在脚本中需要使用默认网关,您可以在当前文件中轻松插入它,而无需退出vim,方法如下:
:!r ip route show | grep default | cut -f 3 -d " "
6. 在Vim中附加外部文件内容
如果您需要将一个独立文件的内容附加到当前正在编辑的文件中,语法与前面的提示类似。只需省略感叹号即可。
例如,要复制/etc/passwd的内容:
:r /etc/passwd
当您需要修改配置文件但想保留原始文件以便“恢复出厂设置”时,可能会发现此提示很有用。
7. 在Vim中搜索和替换单词
曾经在一次考试中,我被要求打开一个包含随机数据的大文本文件。任务是将每个出现的单词Globe替换为Earth(是的,我仍然记得确切的单词)。
对于熟悉sed的人来说,这会让人想起一些东西 – 在ex模式下,键入:
:%s/old/new/g
其中old是要搜索的模式,new是要替换它的字符串。
在上述情况下,我使用了:
:%s/Globe/Earth/g
以完成任务。
那么,如果您想在进行替换之前收到提示呢?很简单。只需在上述命令的末尾添加一个c,如下所示:
:%s/old/new/gc
模式的出现将被突出显示,并将询问您是否要用新字符串替换它:
:%s/gacanepa/me/gc

其中
- y: yes
- n: no
- a: substitute all
- q: quit
- l: substitute this occurrence and quit
- ^E (Ctrl+E): 捲動畫面向上
- ^Y (Ctrl+Y): 捲動畫面向下
摘要
在這篇文章中,我們開始回顧一些 vim 的技巧和訣竅,以增加你的文字編輯技能。你可能會想到其他幾個,所以請在下面的評論表單中分享,我會考慮在這個 vim 系列的下一篇和最後一篇文章中涵蓋它們。
Source:
https://www.tecmint.com/learn-vi-and-vim-editor-tips-and-tricks-in-linux/