簡體   English   中英

在Vim中交互式搜索/替換正則表達式?

[英]Interactive search/replace regex in Vim?

我知道進行全局替換的正則表達式,

     %s/old/new/g

你如何在Vim中進行交互式搜索替換?

添加標志c (在vim命令提示符下):

:%s/old/new/gc

每次出現'old'時都會給你一個是/否的提示。

文本中突出顯示“舊”;在窗口的底部,它說“用new替換(y / n / a / q / l / ^ E / ^ y)?”

一旦選擇了確認替換,Vim的內置幫助提供了有關可用選項的有用信息。 使用:

:h :s

然后滾動到確認選項部分。 截圖如下:

文字說“[C]確認每次替換。[...] CTRL-Y滾動屏幕”

例如,要替換此匹配和所有剩余匹配,請使用a

Mark Biek指出使用:

%s/old/new/gc

全局搜索替換為每個替換的確認。 但是,我也喜歡以交互方式驗證舊文本是否正確匹配。 我首先使用正則表達式進行搜索,然后重用該模式:

/old.pattern.to.match
%s//replacement/gc

s//將使用最后一個搜索模式。

我想你正在尋找c ,例如s/abc/123/gc ,這將導致VIM確認更換。 請參閱:help:替換更多信息。

我通常使用find / substitute / next / repeat命令:-)

/old<CR>3snew<ESC>n.n.n.n.n.n.n.

find "old"substitute 3 characters for "new"find nextrepeat substitute ,依此類推。

這對於大規模替換來說是一種痛苦,但是它允許你有選擇地忽略一些舊的(通過再次按n來找到下一個而不是.重復替換)。

如果您只想計算'abc'的出現次數,那么您可以執行%s/abc//gn 這不會取代任何東西,只會報告'abc'的出現次數。

如果您的替換文本需要針對每個匹配的事件進行更改 (即,不是簡單地選擇是/否來應用單個替換),您可以使用我制作的名為interactive-replace的Vim插件。

Neovim現在有一個預覽替換的功能:

在此輸入圖像描述

圖片來自: https ://medium.com/@eric.burel/stop-using-open-source-5cb19baca44d該功能的文檔: https ://neovim.io/doc/user/options.html#'inccommand'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM