В VIM, почему вы не должны добавлять обратно $ в поиске и замене?
Я узнал, как выполнять более сложные функции поиска и замены в VIM, и я наткнулся на такой пример использования:
:%s/$/|/g
Предположительно, это находит конец каждой строки и заменяет его вертикальной трубой. Впрочем, когда я впервые узнал об этом, я предполагал, что вам придется добавить символ конца строки в строку замены, чтобы получить ожидаемые результаты. т.е.
:%s/$/|$/g
Почему это работает без него и все еще сохраняет разрыв строки? Разве это не должно заменять завершающий символ строки вашей строкой и удалять его в процессе?
То же самое можно спросить с помощью символа начала строки, ^
,
1 ответ
Анкер $
не включает символ новой строки. На самом деле это токен нулевой ширины. Он соответствует пустому символу непосредственно перед первой новой строкой в вашей строке. И отсюда и результат.
Так же, ^
соответствует пустому символу перед первым символом в вашей строке.
См. http://www.regular-expressions.info/anchors.html для получения более подробной информации.