這篇文章主要為大家展示了“l(fā)inux中Vim如何實(shí)現(xiàn)查找與替換命令”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“l(fā)inux中Vim如何實(shí)現(xiàn)查找與替換命令”這篇文章吧。
成都創(chuàng)新互聯(lián)公司成立與2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元哈爾濱做網(wǎng)站,已為上家服務(wù),為哈爾濱各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
Vi/Vim 可以說(shuō)是文本編輯中的一代傳奇人物,直至現(xiàn)在,它仍然在高級(jí)程序員的武器庫(kù)中占有一席之地。每個(gè) Linux 發(fā)行版默認(rèn)都包含Vim ,而且即使你不是 Linux 系統(tǒng)用戶,你也可以安裝 Vim 。
演示文件創(chuàng)建
為了更好的講解后續(xù)內(nèi)容,我們首先需要準(zhǔn)備一個(gè)演示文件。在這里,我生成了一個(gè)包含系統(tǒng)上所有已安裝軟件包的文本文件 PackageList.txt 來(lái)作為演示文件。
cat PackageList.txt
現(xiàn)在,我們?cè)?Vim 中打開(kāi)這個(gè)文本文件。之后,我們就在這個(gè)文件里進(jìn)行后續(xù)的操作演示。
vim PackageList.txt
Vim 搜索功能
在 Windows 下,很多軟件的搜索功能可以使用 ctrl+F 組合鍵調(diào)出搜索框,然后完成后續(xù)的搜索。但在 Vim 里,我們需要使用以下命令結(jié)構(gòu)實(shí)現(xiàn)搜索功能:
?<search_string>
例如,我們想要在 PackageList.txt 文件里搜索 python 這個(gè)關(guān)鍵詞,可以這樣操作:
?python
默認(rèn)情況下,搜索會(huì)定位到一個(gè)離當(dāng)前光標(biāo)最近的一個(gè)匹配結(jié)果。如果我們想要轉(zhuǎn)到下一個(gè)/上一個(gè)搜索結(jié)果,請(qǐng)使用以下按鍵:
n – 尋找下一個(gè)匹配結(jié)果
N – 尋找上一個(gè)匹配結(jié)果
注意:在使用上述按鍵之前,請(qǐng)不要忘記按 Enter 鍵。否則,搜索詞將會(huì)被改變!
上面的只是 Vim 下搜索的基本功能,如果你認(rèn)為這是它的全部搜索功能,那真是圖樣圖森破。接下來(lái),我們來(lái)嘗試一下更強(qiáng)大的搜索功能。
先給出搜索格式:
/\<search_string>/>
這里,\< 表示字符串開(kāi)始,/> 表示字符串結(jié)束,中間的就是需要搜索的字符串表達(dá)式。
與前面的示例一樣,使用 n 或 N 來(lái)導(dǎo)航搜索結(jié)果。
中間的字符串表達(dá)式,不僅支持直接輸入關(guān)鍵詞,還支持使用通配符。例如,我們要搜索以 python- 開(kāi)頭的字符串,可以使用 python* 。這里 * 表示匹配任意字符。
/\<python*/>
搜索結(jié)束后,Vim 會(huì)默認(rèn)將光標(biāo)放在匹配的關(guān)鍵詞的起始字符處。
不喜歡光標(biāo)的默認(rèn)定位?沒(méi)關(guān)系,Vim 允許我們更改光標(biāo)定位的默認(rèn)字符位置。
/python/e
這里,e 的作用是將光標(biāo)定位到匹配關(guān)鍵詞的末尾字符。
不僅如此,使用以下命令模式,你還可以將光標(biāo)定位在搜索結(jié)果的下方或上方。
/<search_string>/+2 or /<search_string>/-3
你也可以從搜索匹配結(jié)果的開(kāi)頭/結(jié)尾偏移光標(biāo)。例如,以下命令將光標(biāo)定位在開(kāi)頭旁邊的3個(gè)字符處。
/<search_string>/s+3
/<search_string>/b+3
這里,s 表示開(kāi)頭,+3 表示從開(kāi)頭開(kāi)始的第 3 個(gè)字符。b 也代表開(kāi)始(begin),它的功能類似于 s 。從截圖中也可以看出,Vim 會(huì)自動(dòng)將 b 翻譯為 s 。
如果有興趣從搜索匹配結(jié)果的末尾進(jìn)行偏移,請(qǐng)使用 e (end)。
/<search_string/e-2
下面是對(duì)文本文件執(zhí)行搜索的另一種很棒的方法。
:%s/<search_pattern>//gn
這條命令具體有啥高大上的作用?我們這里先賣個(gè)關(guān)子,請(qǐng)繼續(xù)往下讀。如果你想學(xué)習(xí)更多 Vim 操作,可以私信我回復(fù)「1024」,有我整理的電子書(shū)和視頻。
Vim 字符串替換
查找和替換是任意一款文本編輯器的一組常見(jiàn)和必備功能。下面就來(lái)講解 Vim 中的字符串替換功能。
Vim 使用以下命令結(jié)構(gòu)實(shí)現(xiàn)替換功能。
:<range> s/<search_string>/<replace_string>/<modifier>
range - 定義執(zhí)行“查找和替換”函數(shù)的范圍,有兩個(gè)不同的值 % - 對(duì)整個(gè)文件執(zhí)行 < start _line > < end_line > - 在一組特定的行上面執(zhí)行操作
search_string - 需要替換的字符串
replace_string - 替換舊字符串的新字符串
modifier - 確定替換行為,有幾個(gè)不同的值 g - 全局替換 gc - 在每次更換之前要求確認(rèn) gn - 忽略替換功能并突出顯示查找結(jié)果。
例如,在 PackageList.txt 文件里用 Python3 字符串替換所有 python 字符串。
:%s/python/Python3/g
簡(jiǎn)單吧?我們?cè)倏纯聪旅孢@條命令。
:%s/python/Python3/gc
可以看出來(lái),它在底部詢問(wèn)你是否要進(jìn)行替換操作。這時(shí),你可以選擇一些操作。那這幾個(gè)是代表什么意思呢?我們一個(gè)個(gè)來(lái)看。
y - 允許執(zhí)行更改。
n - 禁止執(zhí)行更改。
a - 替換全部。
q - 退出任務(wù)。
l - 只需替換這種情況。然后,退出。
^E(Ctrl + E) - 向上滾動(dòng)屏幕
^Y(Ctrl + Y) - 向下滾動(dòng)屏幕
接下來(lái),我們來(lái)試試范圍這一個(gè)域。其實(shí),我們?cè)谇懊娴睦永?,已?jīng)使用了 % 范圍(對(duì)整個(gè)文件范圍)。
如果我們不想在整個(gè)文件范圍進(jìn)行查找替換,如果我們只想在某幾個(gè)特定行進(jìn)行這種操作,需要怎么做?我們可以采用類似于以下命令格式:
:200,250 s/python/Python3/g
執(zhí)行完以上操作,Vim 會(huì)將第 200 行開(kāi)始并在第 250 行結(jié)束的所有 python 替換為 Python3 。
此功能不僅限于一個(gè)詞,還可以完成對(duì)多個(gè)關(guān)鍵詞的替換。它的命令格式如下:
:%s/<search_term_1>\|<search_term_2>\|<search_term_3>/<replace_string>/g
比如,讓我們想要將文本中所有 python 和 py 更改為 Python3 。
:%s/python\|py/Python3/g
區(qū)分大小寫(xiě)
本文前面提到的所有替換操作都是區(qū)分大小寫(xiě)的。例如,Python,python ,PYTHON 等都是不同的。
如果你要忽略大小寫(xiě),可以在搜索字符串后面加上一個(gè) \c ,如下:
/<search_term>\c :%s/<search_term>\c/<replace_term>/g
但這個(gè)設(shè)置是臨時(shí)性的,Vim 關(guān)閉之后就會(huì)失效。如果你想一勞永逸,也可以從 vimrc文件 直接設(shè)置不區(qū)分大小寫(xiě)。
set ignorecase
還有一個(gè)有趣的做法:智能大小寫(xiě)模式。
set smartcase
ignorecase 將強(qiáng)制 Vim 忽略大小寫(xiě)。但是,如果搜索關(guān)鍵詞中只要有大寫(xiě)字母,smartcase 將使 Vim 再次變?yōu)閰^(qū)分大小寫(xiě)。
注意:如果要啟用 smartcase,首先需要設(shè)置 ignorecase 。
以上是“l(fā)inux中Vim如何實(shí)現(xiàn)查找與替換命令”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
新聞名稱:linux中Vim如何實(shí)現(xiàn)查找與替換命令
文章起源:http://aaarwkj.com/article46/isjohg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、用戶體驗(yàn)、微信公眾號(hào)、靜態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)