宏中替换失败后的vim替换

Ada*_*dam 3 vim find-replace

我在宏中有大量的查找和替换序列

:let@m=':%s/?/\\sqrt/g
:%s/?/\\int/g
:%s/?/\\sum/g
:%s/?/\\prod/g
:%s/?/\\bigcup/g
:%s/?/\\bigcap/g
:%s/?/\\cup/g
:%s/?/\\cap/g
:%s/?/\\partial/g
:%s/–/\--/g
:%s/—/\---/g
:%s/•/\\bullet/g
:%s/·/\\cdot/g
:%s/?/\\circ/g
:%s/±/\\pm/g
:%s/?/\\mp/g
<more stuff/>
'
Run Code Online (Sandbox Code Playgroud)

如果其中任何一个查找和替换失败(例如,如果文件中没有 ?),则后续的将不会运行。如何:%s///g安静且无损地使失败?

rom*_*inl 5

来自:help :s_flags

[e]    When the search pattern fails, do not issue an error message and, in
       particular, continue in maps as if no error occurred.  This is most
       useful to prevent the "No match" error from breaking a mapping.
Run Code Online (Sandbox Code Playgroud)

所以:

%s/?/\\sqrt/ge
%s/?/\\int/ge
…
Run Code Online (Sandbox Code Playgroud)