自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Vim查找與替換命令大全,功能完爆IDE!

系統(tǒng) Linux
Vi/Vim 可以說是文本編輯中的一代傳奇人物,直至現(xiàn)在,它仍然在高級程序員的武器庫中占有一席之地。我們今天就來學習 Vim 中的文本搜索和替換功能,幫助你更好地使用 Vim 這款神器。

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

為什么到現(xiàn)在還來講這款古老的軟件?因為它牛逼啊!它包含幾乎所有功能的輕量級鍵盤快捷鍵、內(nèi)置表達式搜索,以及強大而又穩(wěn)定的插件生態(tài)系統(tǒng)。就連其他現(xiàn)代文本編輯器功能,如漂亮的語法高亮,它也有。你會在不知不覺中愛上這款文本編輯神器。

回到主題,我們今天就來學習 Vim 中的文本搜索和替換功能,幫助你更好地使用 Vim 這款神器。

演示文件創(chuàng)建

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

  1. cat PackageList.txt 

Vim查找與替換命令大全,功能完爆IDE!

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

  1. vim PackageList.txt 

Vim查找與替換命令大全,功能完爆IDE!

Vim 搜索功能

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

  1. ?<search_string> 

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

  1. ?python 

Vim查找與替換命令大全,功能完爆IDE!

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

  • n – 尋找下一個匹配結果
  • N – 尋找上一個匹配結果

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

Vim查找與替換命令大全,功能完爆IDE!

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

先給出搜索格式:

  1. /\<search_string>/> 

Vim查找與替換命令大全,功能完爆IDE!

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

與前面的示例一樣,使用 n 或 N 來導航搜索結果。

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

  1. /\<python*/> 

Vim查找與替換命令大全,功能完爆IDE!

搜索結束后,Vim 會默認將光標放在匹配的關鍵詞的起始字符處。

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

  1. /python/e 

Vim查找與替換命令大全,功能完爆IDE!

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

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

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

Vim查找與替換命令大全,功能完爆IDE!

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

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

Vim查找與替換命令大全,功能完爆IDE!

Vim查找與替換命令大全,功能完爆IDE!

Vim查找與替換命令大全,功能完爆IDE!

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

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

  1. /<search_string/e-2 

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

  1. :%s/<search_pattern>//gn 

Vim查找與替換命令大全,功能完爆IDE!

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

Vim 字符串替換

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

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

  1. :<range> s/<search_string>/<replace_string>/<modifier> 
  • range - 定義執(zhí)行“查找和替換”函數(shù)的范圍,有兩個不同的值 % - 對整個文件執(zhí)行 < start _line > < end_line > - 在一組特定的行上面執(zhí)行操作
  • search_string - 需要替換的字符串
  • replace_string - 替換舊字符串的新字符串
  • modifier - 確定替換行為,有幾個不同的值 g - 全局替換 gc - 在每次更換之前要求確認 gn - 忽略替換功能并突出顯示查找結果。

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

  1. :%s/python/Python3/g 

Vim查找與替換命令大全,功能完爆IDE!

Vim查找與替換命令大全,功能完爆IDE!

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

  1. :%s/python/Python3/gc 

Vim查找與替換命令大全,功能完爆IDE!

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

  • y - 允許執(zhí)行更改。
  • n - 禁止執(zhí)行更改。
  • a - 替換全部。
  • q - 退出任務。
  • l - 只需替換這種情況。然后,退出。
  • ^E(Ctrl + E) - 向上滾動屏幕
  • ^Y(Ctrl + Y) - 向下滾動屏幕

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

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

  1. :200,250 s/python/Python3/g 

Vim查找與替換命令大全,功能完爆IDE!

Vim查找與替換命令大全,功能完爆IDE!

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

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

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

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

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

Vim查找與替換命令大全,功能完爆IDE!

Vim查找與替換命令大全,功能完爆IDE!

區(qū)分大小寫

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

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

  1. /<search_term>\c 
  2. :%s/<search_term>\c/<replace_term>/g 

Vim查找與替換命令大全,功能完爆IDE!

Vim查找與替換命令大全,功能完爆IDE!

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

  1. set ignorecase 

Vim查找與替換命令大全,功能完爆IDE!

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

  1. set smartcase 

Vim查找與替換命令大全,功能完爆IDE!

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

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

結論

Vim 可以幫助你做很多事情,多加耐心地練習,相信你會越來越喜愛這款古老的神器。

本文授權轉載自公眾號「良許Linux」。良許,世界500強外企Linux開發(fā)工程師,公眾號里分享大量Linux干貨,歡迎關注!

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2013-12-12 17:46:02

命令VIM

2009-08-03 10:06:22

find命令詳解find命令Linux

2020-08-20 17:21:35

VimRust IDELinux

2009-12-25 16:27:25

Linux命令

2013-05-13 09:36:28

ClouderaImpala 1.0Hadoop

2009-09-14 15:25:23

CCNA命令

2010-06-08 13:03:25

Opensuse 命令

2010-06-03 17:49:25

Hadoop命令

2009-12-25 13:44:00

grep命令

2009-10-22 15:27:16

EclipseNetBeansIntelliJ

2011-03-16 14:22:00

Iptables命令Linux

2024-10-29 15:29:06

2015-05-12 17:21:09

戴爾云計算

2009-11-26 09:56:39

Cisco路由器配置命交換機配置命令

2010-06-29 14:34:40

NetBeans 6.NetBeans

2020-11-12 07:49:18

MySQL

2019-11-24 23:12:30

Vim插件編輯器編程語言

2009-12-23 10:58:58

Linux創(chuàng)建文件命令

2009-12-23 10:58:58

Linux創(chuàng)建文件命令

2010-01-04 17:00:34

VromeChromeChrome Vim擴
點贊
收藏

51CTO技術棧公眾號