我经常发现自己需要执行替换操作,该替换操作将使整个大文件中的匹配稀疏并且具有非平凡的搜索和替换表达式。
例如,说我有一些函数调用,例如okFunction(arg1, arg2 arg3)
。当然,每个函数调用的args都会不同。现在说我发现了一个不需要的更好的功能arg2
。我可以轻松地调整整个文件
:%s/\<okFunction(\(\w\+\), \(\w\+\), \(\w\+\))/betterFunction(\1, \3)/gc
尽管从概念上讲很简单,但我不确定在这种较长的模式中语法是否正确。该c
标志在这里确实有帮助,但是问题是当要求确认时,vim不会显示匹配项将被替换为什么。我的意思是,它将显示替换表达式,但不显示评估结果。如果我用确认替换y
,vim会立即跳到下一场比赛,而且我也不会看我是否犯了任何错误。
我发现vim-over插件可以部分解决问题,但前提是您在键入命令时所有数学都在屏幕上可见。按下Enter键后,其行为与我上面描述的完全相同,并且没有得到预览。
因此,在要求对替代命令进行确认时,有没有办法使vim评估替代表达式?
2
这是vim-bug跟踪器中的收藏夹项(很抱歉,目前无法找到它)
—
Christian Brabandt
为了值得,我通常在第一行使用替换来替换不带的
—
statox
%
,检查结果是否符合我的期望,然后使用替换%
(只有几次击键:):<up><c-b>%
。显然,预览选项会比这有效得多。虽然没有可用的修补程序,也许有人可以用这种选项将替换包包装到vimscript函数中,但这听起来像是很多工作……
@ChristianBrabandt 找到了。截至目前,它仍具有未分类的优先级……
—
Vitor Eiji 2016年
@VitorEiji并不是我在想的那个。但这实际上并不重要,因为目前尚不可能。Neovim提供了“ inccommand”选项,该选项可能会起作用(或者无效,我现在不是真的)
—
Christian Brabandt