首页 > 解决方案 > 宏中替换失败后的vim替换

问题描述

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

: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/>
'

如果这些查找和替换中的任何一个失败(例如,如果文件中没有 ∫),则后续的不会运行。我怎样才能:%s///g安静地、非破坏性地失败?

标签: vimfind-replace

解决方案


来自: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.

所以:

%s/√/\\sqrt/ge
%s/∫/\\int/ge
…

推荐阅读