在VIM中,为什么您不必在search和replace中添加“$”?

我一直在学习如何在VIM中做更复杂的search和replace函数,并且碰到了这样一个用例:

:%s/$/|/g 

这应该是find每一行的结尾,并用一个垂直的pipe道取代它。 当我第一次学习这个时,我认为你必须在replacestring中添加行尾字符来获得预期的结果。 即

 :%s/$/|$/g 

为什么没有它,仍然保持行rest? 难道不应该用你的stringreplace这个行的终止字符,并在这个过程中删除它吗?

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

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

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

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