前言
在2個月前我開始使用Visual Studio Code並搭配Vim 插件來進行程式編寫和做Markdown筆記。
在這段時間內我學習了不少Vim的操作方式,而「搜尋-取代」對我來說是一種滿常用的功能,而Vim也可以透過許多不同的方式來達到此功能。
故我將我自己比較會用到的搜尋-取代方式記錄在下。
基本搜尋-取代指令
以下範例皆為將SSS取代成RRR,只是差在作用範圍不同。
:%s/SSS/RRR/g
:所有行。:s/SSS/RRR/g
:目前游標所在行。:5,12s/SSS/RRR/g
:從第5行到第12行(包括)。:1,$s/SSS/RRR/g
:從第一行(1
)到最後一行($
)。:.,+2s/SSS/RRR/g
:從目前游標所在行(.
)到下2行(+2
)。
參考:Search and replace | Vim Tips Wiki | Fandom
在Visual mode選取範圍並搜尋-取代
先按下v、V或Ctrl+v進入Visual mode,並選取範圍。
:'<,'>s/SSS/RRR/g
在Visual mode所選的範圍中,將SSS取代成RRR。其中:'<,'>
只要在Visual mode中按下:就會自動出現。
參考:Search and replace in a visual selection | Vim Tips Wiki | Fandom
使用Visual mode選擇搜尋並取代
- 按下v、V或Ctrl+v進入Visual mode,並選取欲搜尋之內容。
- 按下y(yank)將選取的內容複製進”暫存器。
- 使用指令(如
:%s/SSS/RRR/g
)並搭配Ctrl+r “貼上”暫存器的內容。 - 按下Enter進行搜尋-取代。
參考:How to search for selected text in Vim? - Super User
使用Visual mode選擇搜尋並用cgn取代
- 按下v、V或Ctrl+v 進入Visual mode,並選取欲搜尋之內容。
- 按下y(yank)將選取的內容複製進”暫存器。
- 按下/進入搜尋模式。
- 按下Ctrl+r “貼上”暫存器的內容。
- 按下Enter進行搜尋。
- 按下cgn進入Insert mode並取代修改搜尋的結果。
- 按下Esc或Ctrl+[離開Insert mode。
- 按下n到下一個搜尋的結果。
- 按下.重複步驟6的修改。
- 重複步驟8和9來逐一修改。
結語
這次我列出了一些我自己常用的搜尋-取代在Vim中的做法,如果有其它方式的話也歡迎留言交流。另外也可以參考Vim 複製並連續取代文字 。
留言可能不會立即顯示。若過了幾天仍未出現,請 Email 聯繫:)