维姆掌握继续:Linux管理员的8个更强大的技巧(第2部分)

在這個系列的先前文章中,我們回顧了添加到您的 vi/m 技能集的 7 個技巧和訣竅,除了之前給出的原因外,學習如何在 Linux 中有效地使用文本編輯器對於系統管理員或工程師是一項基本的能力,也是通過任何主要的 Linux 認證計劃(如LFCSLFCERHCSARHCE)所需的能力。

話雖如此,讓我們開始吧。

8. 創建水平或垂直的 Vim 視窗

這個提示是由我們的讀者之一 Yoander第 1 部分中分享的。您可以啟動 vi/m 並在同一個主視窗內編輯不同的文件:啟動 vi/m 並創建兩個水平視窗,上面是 test1,下面是 test2

啟動 vi/m,開啟兩個水平視窗,上方顯示 test1,下方顯示 test2

vim -o test1 test2 
Launch Vim Editor in Horizontal Windows

啟動 vi/m,開啟兩個垂直視窗,左側顯示 test3,右側顯示 test4:

vim -O test3 test4 
Launch Vim Editor in Vertical Windows

您可以使用 vi/m 的標準移動方式在視窗之間切換游標(h: 向右,l: 向左,j: 向下,k: 向上):

  • Ctrl+w k – 上方
  • Ctrl+w j – 下方
  • Ctrl+w l – 左方
  • Ctrl+w h – 右方

9. 在 Vim 中變更為大寫或小寫

請注意,此技巧僅適用於 vim。在接下來的範例中,X 是一個整數數字。

  • 要將一系列字母變更為大寫,請將游標置於第一個字母上,然後在 ex 模式下輸入 gUX,最後按下鍵盤上的向右箭頭。
  • 要將 X 個單詞變更為大寫,請將游標置於單詞的開頭,然後在 ex 模式下輸入 gUXw
  • 要將整行變更為大寫,請將游標置於該行任意位置,然後在 ex 模式下輸入 gUU

例如,要將整行 lowercase 變更為 uppercase,您應該將游標置於該行任意位置,然後輸入 gUU

Change String to Uppercase in Vim Editor

例如,要將2個大寫單詞轉換為小寫,您應該將游標放在第一個單詞的開頭並輸入gu2w:

Convert String to Lowercase in Vim Editor

10. 在Vim插入模式下刪除文本

雖然您可以在ex模式下一次刪除字符或幾個單詞(例如dw刪除單詞),但您也可以在插入模式下這樣做:

  • Ctrl + h:刪除游標當前位置之前的字符。
  • Ctrl + w:刪除游標當前位置之前的單詞。為了正確執行此操作,游標必須放置在要刪除的單詞後面的空格中。
  • Ctrl + u:從游標左側的字符開始刪除當前行。

11. 在Vim中移動或複製現有行

雖然您可以使用熟悉的ddyyp命令在ex模式下分別刪除、複製(複製)和粘貼行,但這僅在游標放置在要執行這些操作的位置時有效。

好消息是,使用複製移動命令,您可以無論游標當前放置在何處都執行相同的操作。

對於下一個示例,我們將使用一首名為“永恆”的短詩,作者是Terri Nicole Tharrington。首先,我們將讓Vim顯示行號(在命令模式下使用:set nu – 將這視為一個額外的提示)。我們將使用:3copy5(也在命令模式下)將第3行複製到第5行下方:

Move Copy Existing Lines in Vim

現在,撤銷最後的更改(Esc + u – 另一個額外提示!)並輸入:1move7將第1行移動到第7行。請注意第2行到第7行是如何上移的,而原來的第1行現在佔據了第7行:

Move Lines in Vim Editor

12. 在Vim中導航和計算模式匹配

這個提示基於替換命令(本系列第1部分中的提示#7),但不同的是它不會刪除任何內容,因為替換行為被n選項覆蓋,導致計算指定模式的出現次數:

請確保您沒有省略任何正斜線!

:%s/pattern//gn 

例如,

:%s/libero//gn
Count Matches by Search Pattern in Vim

要在ex模式下從一個模式匹配移動到下一個,請按n(小寫N)。要移動到上一個實例,請按N

13. 在指定行打開Vim中的文件

默認情況下,當您啟動vi/m時,光標最初放置在最後編輯的行上。如果您想打開程序並將光標直接放置在指定的行上,您可以使用以下技巧:

# vim filename +line_number

例如,打開forever.txt並將光標放置在第6行:

# vim forever.txt +6

讓我們稍微修改一下這個例子。假設我們想要在出現模式的第3次出現的行上打開文件:

# vim filename +$(grep -in pattern filename | sed -n 3p | cut -d: -f1)

讓我們更仔細地看一下上面的命令做了什麼:

  • grep -in pattern filename – 顯示文件名稱中出現模式的行,每行輸出前都有行號。
  • sed -n 3p – 顯示前一個管道輸出的第3行。

最後,

  • cut -d: -f1 返回上一個管道的第一個字段,其中冒號 (:) 是字段分隔符。
grep -in forever forever.txt
grep -in forever forever.txt | sed -n 3p
grep -in forever forever.txt | sed -n 3p | cut -d: -f1
Open Vim Editor in Specified Line

然後,前一個命令的結果被傳遞給 vi/m 以在指定的行上打開程序。

14. 自定義 Vim 環境

如果你使用 vi/m 來編輯配置文件或編寫代碼,你可能希望在打開程序時能夠顯示行

  • Vim for Linux Admins: 8 Powerful Tips and Tricks (Part 2)

號,並設置自動縮進,以便在按下 Enter 鍵時,光標會自動放置在正確的位置。此外,你可能還想自定義一個制表符佔據的空格數量。

雖然你可以在每次啟動 vi/m 時進行這些設置,但在 ~/.vimrc 中設置這些選項會更容易,這樣它們就會自動應用:

set number
set autoindent
set shiftwidth=4
set softtabstop=4
set expandtab

若要進一步自訂您的vi/m環境,您可以參考線上vim文件

15. 獲取一般Vim幫助/使用Vimtutor

如果您需要隨時提升您的vi/m技能,您可以從命令列啟動vimtutor,它將顯示完整的vi/m幫助,您可以隨時參考,而無需啟動網頁瀏覽器來搜索如何在vi/m中完成特定任務。

vimtutor
Vim Editor Help and Options

請注意,您可以像在vi/m中導航或搜索常規文件一樣導航或搜索Vimtutor的內容。

總結

在這兩篇文章系列中,我分享了幾個vi/m技巧和竅門,這些應該有助於您在使用命令行工具編輯文本時更有效率。

I’m sure you must have other ones – so feel free to share them with the rest of the community in the comment form below. As always, questions and comments are also welcome.

Source:
https://www.tecmint.com/how-to-use-vi-and-vim-editor-in-linux/