vim宏避免E486错误停止宏动作

原因

正则没有匹配到数据

解决办法

自己在录制宏的时候,中间有替换字符串的操作,如果出现替换的字符串不存在就会导致整个宏就停止下来了。这样不是我想要的。
解决办法加 /e参数
详细看帮助:

 :help s_flag
[e]     如果模式搜索不成功,不给出错误信息。因为没产生错误,映射的过程得以继
	续。这主要用来防止在映射执行过程的无匹配 ("No match") 错误中断映射。
	不过,Vim 不会抑制以下的错误信息:
		Regular expressions can't be delimited by letters (正规表达式
			不能以字母分隔)
		\ should be followed by /, ? or & (\ 必须后面跟 /、? 或者 &)
		No previous substitute regular expression (没有上次的替代正规
			表达式)
		Trailing characters (结尾有多余的字符)
		Interrupted (中断)

举例

比如:我想替换上面的字符串中的 全部字母0为 i

:%s/o/i/g

如果字符中有o则可以正常的完成替换操作。
在这里插入图片描述

在这里插入图片描述

:%s/o/i/ge

加个参数e 完美解决问题。

参考

《How do I ignore regex failure while running a macro?

https://vi.stackexchange.com/questions/8219/how-do-i-ignore-regex-failure-while-running-a-macro

猜你喜欢

转载自blog.csdn.net/lxyoucan/article/details/114005819