редактирование файла с помощью vim, у которого нет маркера EOL в последней строке, но есть окончания строки CRLF - PullRequest
3 голосов
/ 21 апреля 2010

Мне часто приходится редактировать файлы сценариев, интерпретатор которых обрабатывает файлы с маркером EOL в последней строке файла как ошибку (т. Е. Файл обрабатывает CRLF как «новые строки», а не как «окончания строк»). ).

В настоящее время я открываю эти файлы в Vim в двоичном режиме (-b в командной строке). Он автоматически определяет отсутствие EOL в последней строке и соответствующим образом устанавливает параметр «noeol», что не позволяет ему записать EOL в последнюю строку.

Поскольку в файле есть окончания строк CRLF, я получаю множество ^M s в конце моих строк (кажется, что в двоичном режиме он интерпретирует только окончания строк в стиле Unix). Я не могу открыть его в текстовом режиме, потому что опция «noeol» игнорируется для недвоичных файлов.

Это очень раздражает, и я всегда должен помнить, что нужно вручную вводить ^M в конце каждой строки! Есть ли способ заставить его принять окончания строки в стиле DOS в двоичном режиме или заставить слушать прослушивание опции EOL в текстовом режиме?

Ответы [ 2 ]

0 голосов
/ 21 апреля 2010

Да, вам не нужно вручную вводить ^M в каждой строке; это было бы утомительно! Попробуйте ввести это:

:set ff=dos

Вы также можете найти эту статью полезной: изменить формат конца строки для dos-unix

При дальнейшем рассмотрении глобальный поиск и замена, вероятно, являются необходимыми, поэтому сделайте это. (Я проверял это ранее сегодня, и он работал с файлом unix, редактируемым с помощью gvim в Windows XP, а не в двоичном режиме.)

:%s/^M//g

Введите эту команду точно так, как показано, за исключением ^M, который является специальным символом. Чтобы создать его, нужно нажать Ctrl и v вместе, затем нажать Enter (отпустить CRTL + V до нажатия Enter)

0 голосов
/ 21 апреля 2010

вы можете запустить команду dos2unix перед редактированием?

...