5

我一直在学习如何在 VIM 中执行更复杂的搜索和替换功能,并且遇到了这样的用例:

:%s/$/|/g

据说这会找到每行的末尾并用垂直管道替换它。不过,当我第一次学习这一点时,我认为您必须在替换字符串中添加行尾字符才能获得预期的结果。IE,

:%s/$/|$/g

为什么没有它它仍然可以工作并且仍然保留换行符?它不应该用您的字符串替换行的终止字符并在此过程中将其删除吗?

可以用行首字符 . 来询问同样的事情^

4

1 回答 1

17

Anchor$不包含换行符。事实上,它是一个零宽度标记。它匹配字符串中第一个换行符之前的空字符。因此结果。

同样,匹配字符串中^一个字符之前的空字符。

有关详细信息,请参阅http://www.regular-expressions.info/anchors.html 。

于 2012-12-18T19:34:57.627 回答