2009-10-01 2 views
29

в gvim на окнах, если у меня есть текст с CRLF eol, тогда текст отобразит^M в конце каждой строки.в Vim Как скрыть символы eol doc^M

Как мне скрыть этот специальный символ?

:.. Установить NOLIST команда «»»не освобождает его Я озадачен

UPDATE

я сделал: набор Типовфайлов = Unix, DOS, как список, но он не работал первый. Я закрыл файл и вновь его снова, и она работала. по умолчанию я поставил Типовфайлы только значение UniX. Спасибо за ответы.

ответ

28

Вы можете установить fileformat в dos.

:ed ++ff=dos % 
+2

Кажется, что «исправляет» файл, добавляя всплывающие строки dos, где бы они ни пропадали, что может быть причиной того, что vim отображает маркеры^M (это было в моем случае). – numerodix

+0

Можно ли связать эту команду с раскладкой? – deeJ

+2

Ответ и ответ @ jqno являются «правильными», но по-разному. ': e ++ ff = dos%' снова откроет текущий файл в режиме DOS/Windows. ': set fileformats = dos' приведет к открытию любых открытых файлов в режиме DOS/Windows. Хорошее объяснение со всеми деталями можно найти по адресу http://vim.wikia.com/wiki/File_format –

0

использовать команду:

:1,$ s/^v^M/ /g 
+2

Скрыть, а не удалить. –

+0

touchhe' - Я тоже пропустил эту точную точку (хотя я * сделал * сделаю копию, а не ударил оригинал) – Roboprog

1

Формат файла обычно определяется автоматически. В вашем файле должны быть смешанные строки Unix и DOS/Windows.

попробовать это, чтобы очистить его (где "чистый" = формат Unix):

% tr -d '\015' <old.file> new.file 
+0

Er, вы сказали «на окнах». К сожалению. Ну, так страдать? У всех есть кигвин, не так ли? Я полагаю, что гораздо больше программистов на Windows, чем программистов * nix, но я, как правило, забываю об этом (несмотря на то, что в 80-х годах начал работать MS-DOS). Я не могу этого вынести ... – Roboprog

16

Чтобы скрыть их:

:set fileformats=dos 

Чтобы удалить их (так что вы можете позже сохранить файл как файл Unix):

:%s/\r//g 
+2

В моем случае после выполнения ': set fileformats = dos' мне пришлось перезагрузить файл через': e% '. Затем все символы '^ M' исчезли. –

0

Я хотел бы отметить, что если вы используете полномасштабную VIM (по крайней мере на моем Ubuntu 9.10 коробке) она «делает то, что вы хотите »и автоматически скрывает его, но запас vi (и vim-tiny) НЕ скрывает скрытие^M. Если вы выполняете минимальную установку (или установку сервера), вы получаете только vi и vim-tiny. Исправление, которое я обнаружил, это установить правильный vim (apt-get install vim) в ящике ubuntu. Надеюсь, это поможет кому-то, кто приходит по этой теме по той же причине, что и я: -D

6

Созыв в формате DOS или Unix раз и навсегда, конечно, предпочтительный подход, иногда некоторые сотрудники просто не делают заботиться о правильном управлении исходными кодами, чтобы заставить их редакторов вести себя.

В этих отчаянных случаях вместо полного преобразования файла (в результате файл полностью переписан сам по SCM, что делает бесполезной функцию «винить»), я счел предпочтительным просто притвориться, что проблема не " t существует. Если компилятор гостеприимны, и PHP всех средств является, вы можете иметь смешанный-EOL файл отлично выглядеть круто с помощью следующей команды:

:match Invisible /\r$/ 

Или в более новых версиях VIM 7.4+

:match Ignore /\r$/ 

Чтобы все ухудшилось, большинство редакторов GUI не завершают текстовый файл с помощью новой строки, а когда файл заканчивается символом новой строки, они показывают пустую строку внизу.Поскольку это довольно раздражает, большинство людей удалит эту пустую строку, что приведет к созданию смешанного файла EOL (и ужасных^Ms, показанных в Vim), если формат файла был DOS.

Если кто-нибудь знает, как сделать Eclipse, или NetBeans честь новой строки завершение, не показывая пустую последнюю строку (как Вим умно делает), пожалуйста поделиться своими знаниями и вы будете делать кодировщик счастлив здесь. ;-)

+0

Я получаю «E28: Нет такого названия группы подсветки: Невидимый», когда я пробовал это на gvim 7.4, работающем в Windows? Есть ли что-то еще, что мне нужно сделать в первую очередь? – monojohnny

+0

Интересно, я не использовал этот трюк какое-то время (из-за новой работы и более внимательных сотрудников), и теперь, когда я пытаюсь использовать OSX с Vim 7.4, я получаю ту же ошибку. Я полагаю, что определение «Invisible» исчезло из файлов синтаксиса дистрибутива, поэтому нам, возможно, придется повторно реализовать его в нашем собственном '.vimrc'. К сожалению, я не знаю, как это было изначально закодировано. – wiz

+0

Я думаю, что новый синтаксис ': match Ignore/\ r $ /' –