我一直在学习如何在 VIM 中执行更复杂的搜索和替换功能,并且遇到了这样的用例:
:%s/$/|/g
据说这会找到每行的末尾并用垂直管道替换它。不过,当我第一次学习这一点时,我认为您必须在替换字符串中添加行尾字符才能获得预期的结果。IE,
:%s/$/|$/g
为什么没有它它仍然可以工作并且仍然保留换行符?它不应该用您的字符串替换行的终止字符并在此过程中将其删除吗?
可以用行首字符 . 来询问同样的事情^
。
我一直在学习如何在 VIM 中执行更复杂的搜索和替换功能,并且遇到了这样的用例:
:%s/$/|/g
据说这会找到每行的末尾并用垂直管道替换它。不过,当我第一次学习这一点时,我认为您必须在替换字符串中添加行尾字符才能获得预期的结果。IE,
:%s/$/|$/g
为什么没有它它仍然可以工作并且仍然保留换行符?它不应该用您的字符串替换行的终止字符并在此过程中将其删除吗?
可以用行首字符 . 来询问同样的事情^
。
Anchor$
不包含换行符。事实上,它是一个零宽度标记。它匹配字符串中第一个换行符之前的空字符。因此结果。
同样,匹配字符串中第^
一个字符之前的空字符。
有关详细信息,请参阅http://www.regular-expressions.info/anchors.html 。