溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

linux中Vim如何實現(xiàn)查找與替換命令

發(fā)布時間:2021-10-14 17:33:02 來源:億速云 閱讀:290 作者:小新 欄目:系統(tǒng)運維

這篇文章主要為大家展示了“l(fā)inux中Vim如何實現(xiàn)查找與替換命令”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“l(fā)inux中Vim如何實現(xiàn)查找與替換命令”這篇文章吧。

Vi/Vim 可以說是文本編輯中的一代傳奇人物,直至現(xiàn)在,它仍然在高級程序員的武器庫中占有一席之地。每個 Linux 發(fā)行版默認都包含Vim  ,而且即使你不是 Linux 系統(tǒng)用戶,你也可以安裝 Vim 。

演示文件創(chuàng)建

為了更好的講解后續(xù)內(nèi)容,我們首先需要準備一個演示文件。在這里,我生成了一個包含系統(tǒng)上所有已安裝軟件包的文本文件 PackageList.txt  來作為演示文件。

cat PackageList.txt

linux中Vim如何實現(xiàn)查找與替換命令

現(xiàn)在,我們在 Vim 中打開這個文本文件。之后,我們就在這個文件里進行后續(xù)的操作演示。

vim PackageList.txt

linux中Vim如何實現(xiàn)查找與替換命令

Vim 搜索功能

在 Windows 下,很多軟件的搜索功能可以使用 ctrl+F 組合鍵調(diào)出搜索框,然后完成后續(xù)的搜索。但在 Vim  里,我們需要使用以下命令結(jié)構(gòu)實現(xiàn)搜索功能:

?<search_string>

例如,我們想要在 PackageList.txt 文件里搜索 python 這個關(guān)鍵詞,可以這樣操作:

?python

linux中Vim如何實現(xiàn)查找與替換命令

默認情況下,搜索會定位到一個離當(dāng)前光標最近的一個匹配結(jié)果。如果我們想要轉(zhuǎn)到下一個/上一個搜索結(jié)果,請使用以下按鍵:

  • n &ndash; 尋找下一個匹配結(jié)果

  • N &ndash; 尋找上一個匹配結(jié)果

注意:在使用上述按鍵之前,請不要忘記按 Enter 鍵。否則,搜索詞將會被改變!

linux中Vim如何實現(xiàn)查找與替換命令

上面的只是 Vim 下搜索的基本功能,如果你認為這是它的全部搜索功能,那真是圖樣圖森破。接下來,我們來嘗試一下更強大的搜索功能。

先給出搜索格式:

/\<search_string>/>

linux中Vim如何實現(xiàn)查找與替換命令

這里,\< 表示字符串開始,/> 表示字符串結(jié)束,中間的就是需要搜索的字符串表達式。

與前面的示例一樣,使用 n 或 N 來導(dǎo)航搜索結(jié)果。

中間的字符串表達式,不僅支持直接輸入關(guān)鍵詞,還支持使用通配符。例如,我們要搜索以 python- 開頭的字符串,可以使用 python* 。這里 *  表示匹配任意字符。

/\<python*/>

linux中Vim如何實現(xiàn)查找與替換命令

搜索結(jié)束后,Vim 會默認將光標放在匹配的關(guān)鍵詞的起始字符處。

不喜歡光標的默認定位?沒關(guān)系,Vim 允許我們更改光標定位的默認字符位置。

/python/e

linux中Vim如何實現(xiàn)查找與替換命令

這里,e 的作用是將光標定位到匹配關(guān)鍵詞的末尾字符。

不僅如此,使用以下命令模式,你還可以將光標定位在搜索結(jié)果的下方或上方。

/<search_string>/+2  or  /<search_string>/-3

linux中Vim如何實現(xiàn)查找與替換命令

你也可以從搜索匹配結(jié)果的開頭/結(jié)尾偏移光標。例如,以下命令將光標定位在開頭旁邊的3個字符處。

/<search_string>/s+3
/<search_string>/b+3

linux中Vim如何實現(xiàn)查找與替換命令

linux中Vim如何實現(xiàn)查找與替換命令

linux中Vim如何實現(xiàn)查找與替換命令

這里,s 表示開頭,+3 表示從開頭開始的第 3 個字符。b 也代表開始(begin),它的功能類似于 s 。從截圖中也可以看出,Vim 會自動將 b  翻譯為 s 。

如果有興趣從搜索匹配結(jié)果的末尾進行偏移,請使用 e (end)。

/<search_string/e-2

下面是對文本文件執(zhí)行搜索的另一種很棒的方法。

:%s/<search_pattern>//gn

linux中Vim如何實現(xiàn)查找與替換命令

這條命令具體有啥高大上的作用?我們這里先賣個關(guān)子,請繼續(xù)往下讀。如果你想學(xué)習(xí)更多 Vim  操作,可以私信我回復(fù)「1024」,有我整理的電子書和視頻。

Vim 字符串替換

查找和替換是任意一款文本編輯器的一組常見和必備功能。下面就來講解 Vim 中的字符串替換功能。

Vim 使用以下命令結(jié)構(gòu)實現(xiàn)替換功能。

:<range> s/<search_string>/<replace_string>/<modifier>
  • range - 定義執(zhí)行“查找和替換”函數(shù)的范圍,有兩個不同的值 % - 對整個文件執(zhí)行 < start _line > <  end_line > - 在一組特定的行上面執(zhí)行操作

  • search_string - 需要替換的字符串

  • replace_string - 替換舊字符串的新字符串

  • modifier - 確定替換行為,有幾個不同的值 g - 全局替換 gc - 在每次更換之前要求確認 gn - 忽略替換功能并突出顯示查找結(jié)果。

例如,在 PackageList.txt 文件里用 Python3 字符串替換所有 python 字符串。

:%s/python/Python3/g

linux中Vim如何實現(xiàn)查找與替換命令

linux中Vim如何實現(xiàn)查找與替換命令

簡單吧?我們再看看下面這條命令。

:%s/python/Python3/gc

linux中Vim如何實現(xiàn)查找與替換命令

可以看出來,它在底部詢問你是否要進行替換操作。這時,你可以選擇一些操作。那這幾個是代表什么意思呢?我們一個個來看。

  • y - 允許執(zhí)行更改。

  • n - 禁止執(zhí)行更改。

  • a - 替換全部。

  • q - 退出任務(wù)。

  • l - 只需替換這種情況。然后,退出。

  • ^E(Ctrl + E) - 向上滾動屏幕

  • ^Y(Ctrl + Y) - 向下滾動屏幕

接下來,我們來試試范圍這一個域。其實,我們在前面的例子里,已經(jīng)使用了 % 范圍(對整個文件范圍)。

如果我們不想在整個文件范圍進行查找替換,如果我們只想在某幾個特定行進行這種操作,需要怎么做?我們可以采用類似于以下命令格式:

:200,250 s/python/Python3/g

linux中Vim如何實現(xiàn)查找與替換命令

linux中Vim如何實現(xiàn)查找與替換命令

執(zhí)行完以上操作,Vim 會將第 200 行開始并在第 250 行結(jié)束的所有 python 替換為 Python3 。

此功能不僅限于一個詞,還可以完成對多個關(guān)鍵詞的替換。它的命令格式如下:

:%s/<search_term_1>\|<search_term_2>\|<search_term_3>/<replace_string>/g

比如,讓我們想要將文本中所有 python 和 py 更改為 Python3 。

:%s/python\|py/Python3/g

linux中Vim如何實現(xiàn)查找與替換命令

linux中Vim如何實現(xiàn)查找與替換命令

區(qū)分大小寫

本文前面提到的所有替換操作都是區(qū)分大小寫的。例如,Python,python ,PYTHON 等都是不同的。

如果你要忽略大小寫,可以在搜索字符串后面加上一個 \c ,如下:

/<search_term>\c :%s/<search_term>\c/<replace_term>/g

linux中Vim如何實現(xiàn)查找與替換命令

linux中Vim如何實現(xiàn)查找與替換命令

但這個設(shè)置是臨時性的,Vim 關(guān)閉之后就會失效。如果你想一勞永逸,也可以從 vimrc文件 直接設(shè)置不區(qū)分大小寫。

set ignorecase

linux中Vim如何實現(xiàn)查找與替換命令

還有一個有趣的做法:智能大小寫模式。

set smartcase

linux中Vim如何實現(xiàn)查找與替換命令

ignorecase 將強制 Vim 忽略大小寫。但是,如果搜索關(guān)鍵詞中只要有大寫字母,smartcase 將使 Vim 再次變?yōu)閰^(qū)分大小寫。

注意:如果要啟用 smartcase,首先需要設(shè)置 ignorecase 。

以上是“l(fā)inux中Vim如何實現(xiàn)查找與替換命令”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI