搜索后查看更改并在Vim上替换?

时间:2017-10-07 00:42:24

标签: vim

我有办法查看搜索生成的更改并在vim中替换吗?

E.g。以下示例删除尾随空格

:%s/\s\+$//g

但是说,我不确定正则表达式,我担心它改变了一些我不想改变的东西。但我也不想使用gc而不是g,因为确认太多的更改令人困惑并需要一段时间,而我希望看到新缓冲区中的更改,如某种名单。这可能吗?

2 个答案:

答案 0 :(得分:4)

您可以使用一个老技巧来查看已保存文件与最新更改之间的差异。您可以使用:help :DiffOrig查看。

归结为这个命令:

 command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
    \ | wincmd p | diffthis

将此文件放入.vimrc后,您可以保存文件,进行替换(或任何其他您喜欢的更改),然后运行:DiffOrig查看更改。如果您对结果不满意,可以按u进行撤消,也可以保存文件。

这确实意味着您必须在运行替换之前保存文件,但根据您的评论,我认为这对您来说是否已经足够好了?

您可能还想在vim wiki中查看此页面以获取其他一些提案:http://vim.wikia.com/wiki/Diff_current_buffer_and_the_original_file

答案 1 :(得分:3)

Neovim 有一个不错的功能,可以快速突出显示替换

"As you type a substitution  the results will immediately be
"visible in the edit window. This feature is best highlighted
"in this video: http://www.youtube.com/watch?v=sA3z6gsqOuw
if has("nvim")
    set inccommand=nosplit
endif

另一个很酷的选择是插件NarrowRegion。它需要选择并使用临时窗口来应用您的更改,保存后,结果将被放回原始文本中。