В поиске и замене vim, новая строка отображается как "^ @"

Я скопировал вложенные ячейки длинной электронной таблицы google в txt файл, который представляет собой список адресов электронной почты, разделенных запятыми. Существует также множество "пустых" ячеек, т.е. Пустое пространство, окруженное запятыми. Поэтому у меня мог бы быть следующий список:

[email protected], ,[email protected], , , , [email protected]

В vim, когда я пытаюсь добавить отдельный адрес по новой строке с помощью этой команды:

:%s/, /,\n/g

вместо добавления новой строки после запятой я вместо этого получаю "^ @".

Я знаю, что это имеет какое-то отношение к наборам символов, но я не знаю, как это исправить.

Ответ 1

В поле замены :s вам нужно использовать \r not \n для символов новой строки.

^ @- нулевой символ ASCII. Vim внутренне использует \r для новых строк (это ^ M) и \n для ASCII null, поэтому при замене, если вы используете \n, вы получаете эти нулевые символы вместо строк новой строки. См. Также: h subst-replace-special