在 Vim 中進行文字選擇操作和使用標誌

2021-08-10 20:15:35 字數 2816 閱讀 3817

基於圖形介面的文字或源**編輯器,提供了一些諸如文字選擇的功能。我是想說,可能大多數人不覺得這是乙個功能。不過像 vim 這種基於命令列的編輯器就不是這樣。當你僅使用鍵盤操作 vim 的時候,就需要學習特定的命令來選擇你想要的文字。在這個教程中,我們將詳細討**本選擇這一功能以及 vim 中的標誌功能。

在此之前需要說明的是,本教程中所提到的例子、命令和指令都是在 ubuntu 16.04 的環境下測試的。vim 的版本是 7.4。

vim 的文字選擇功能

我們假設你已經具備了 vim 編輯器的基本知識(如果沒有,可以先閱讀這篇文章)。你應該知道,d 命令能夠剪下/刪除一行內容。如果你想要剪下 3 行的話,可以重複命令 3 次。不過,如果需要剪下 15 行呢?重複 d 命令 15 次是個實用的解決方法嗎?

顯然不是。這種情況下的最佳方法是,選中你想要剪下/刪除的行,再執行 d 命令。舉個例子:

假如我想要剪下/刪除下面截圖中 introduction 小節的第一段:

那麼我的做法是:將游標放在第一行的開始,(確保退出了 insert 模式)按下 v(即 shift+v)命令。這時 vim 會開啟檢視模式,並選中第一行。

現在,我可以使用方向鍵「下」,來選中整個段落。

這就是我們想要的,對吧!現在只需按 d 鍵,就可以剪下/刪除選中的段落了。當然,除了剪下/刪除,你可以對選中的文字做任何操作。

這給我們帶來了另乙個重要的問題:當我們不需要刪除整行的時候,該怎麼做呢?也就是說,我們剛才討論的解決方法,僅適用於想要對整行做操作的情況。那麼如果我們只想刪除段落的前三句話呢?

其實也有相應的命令 - 只需用小寫 v 來代替大寫 v 即可。在下面的例子中,我使用 v 來選中段落的前三句話:

有時候,你需要處理的資料由單獨的列組成,你的需求可能是選擇特定的一列。考慮下面的截圖:

假設我們只需選擇文字的第二列,即國家的名字。這種情況下,你可以將游標放在這一列的第乙個字母上,按 ctrl+v 一次。然後,按方向鍵「下」,選中每個國家名字的第乙個字母:

然後按方向鍵「右」,選中這一列。

小竅門:如果你之前選中了某個文字塊,現在想重新選中那個文字塊,只需在命令模式下按 gv 即可。

使用標誌

有時候,你在處理乙個很大的檔案(例如源**檔案或者乙個 shell 指令碼),可能想要切換到乙個特定的位置,然後再回到剛才所在的行。如果這兩行的位置不遠,或者你並不常做這類操作,那麼這不是什麼問題。

但是,如果你需要頻繁地在當前位置和一些較遠的行之間切換,那麼最好的方法就是使用標誌。你只需標記當前的位置,然後就能夠通過標誌名,從檔案的任意位置回到當前的位置。

在 vim 中,我們使用 m 命令緊跟乙個字母來標記一行(字母表示標誌名,可用小寫的 a - z)。例如 ma。然後你可以使用命令 'a (包括左側的單引號)回到標誌為 a 的行。

小竅門:你可以使用「單引號」 ' 來跳轉到標誌行的第乙個字元,或使用「反引號」 ` 來跳轉到標誌行的特定列。

vim 的標誌功能還有很多其他的用法。例如,你可以先標記一行,然後將游標移到其他行,執行下面的命令:

d'[標誌名]
來刪除當前位置和標誌行之間的所有內容。

在 vim 官方文件中,有乙個重要的內容:

每個檔案有一些由小寫字母(a-z)定義的標誌。此外,還存在一些由大寫字母(a-z)定義的全域性標誌,它們定義了乙個特定檔案的某個位置。例如,你可能在同時編輯十個檔案,每個檔案都可以有標誌 a,但是只有乙個檔案能夠有標誌 a。

我們已經討論了使用小寫字母作為 vim 標誌的基本用法,以及它們的便捷之處。下面的這段摘錄講解的足夠清晰:

由於種種侷限性,大寫字母標誌可能乍一看不如小寫字母標誌好用,但它可以用作一種快速的檔案書籤。例如,開啟 .vimrc 檔案,按下 mv,然後退出。下次再想要編輯 .vimrc 檔案的時候,按下 'v 就能夠開啟它。

最後,我們使用 delmarks 命令來刪除標誌。例如:

:delmarks a
這一命令將從檔案中刪除乙個標誌。當然,你也可以刪除標誌所在的行,這樣標誌將被自動刪除。你可以在 vim 文件 中找到關於標誌的更多資訊。

總結

當你開始使用 vim 作為首選編輯器的時候,類似於這篇教程中提到的功能將會是非常有用的工具,能夠節省大量的時間。你得承認,這裡介紹的文字選擇和標誌功能幾乎不怎麼需要學習,所需要的只是一點練習。

via:

在VIM中進行文字替換

在vim中進行文字替換 1.替換當前行中的內容 s from to s即substitude s from to 將當前行中的第乙個from,替換成to。如果當前行含有多個 from,則只會替換其中的第乙個。s from to g 將當前行中的所有from都替換成to。s from to gc 將當...

在VIM中進行文字替換

在vim中進行文字替換 1.替換當前行中的內容 s from to s即substitude s from to 將當前行中的第乙個from,替換成to。如果當前行含有多個 from,則只會替換其中的第乙個。s from to g 將當前行中的所有from都替換成to。s from to gc 將當...

在VIM中進行文字替換

原文 1.替換當前行中的內容 s from to s即substitude s from to 將當前行中的第乙個from,替換成to。如果當前行含有多個 from,則只會替換其中的第乙個。s from to g 將當前行中的所有from都替換成to。s from to gc 將當前行中的所有fro...