Я использую Vim 7.3 под Windows 7 и столкнулся с проблемой. Символы ^M не исчезают, несмотря на все мои усилия :e ++ff=dos не помогает.
Какие-либо предложения?
^ M обычно появляются, когда файл не соответствует используемым терминаторам строки. Попробуйте следующее:
testfile используя vim с несколькими случайными строками, и запишите его в режиме dos.Затем запустите (надеюсь, у вас установлен Cygwin):
sed '2s/.$//' testfile > corruptfile
Это удалит последний символ второй строки, создав несогласованность в используемых терминаторах строки.
corruptfile с помощью vim. Символы ^ M появятся, чтобы вы знали о несоответствии.В реальной жизни программы, написанные с использованием одного типа ограничителя строки, могут привести к таким несоответствиям. Хотя эти несоответствия кажутся невинными, они могут вызвать проблемы с другими программами. Например, subversion не позволяет добавлять в репозиторий файл с несовместимыми терминаторами строк. Другие программы могут просто молча провалиться.
Чтобы ^ M исчезло, просто сделайте глобальную замену:
:% s/^M//g
^M производится нажатием: Ctrl+v <Enter>
Затем запишите файл в нужном формате:
:set ff=dos
:w
Символ, который vim отображает как ^ M, является CR (возврат каретки, символ ASCII 13). Windows использует как CR и LF (новая строка, символ ASCII 10) для кодирования разрывов строк в текстовых файлах. Linux/Unix использует только LF для кодирования разрывов строк, а Mac OS использует только CR .
Если вы откроете текстовый файл, созданный на компьютере с Windows в окне Linux, вы можете увидеть конечные символы CR в каждой строке. Есть несколько способов их удалить. Один - заменить их в vim, как предложил m000, другой - recode файл:
recode ibmpc..latin1 SOME.TXT