Что означает символ ^M в Vim?



Я ^M символ в моем vimrc, и это нарушает мою конфигурацию.

621   15  

15 ответов:

Unix использует 0xA для символа новой строки. Windows использует комбинацию из двух символов: 0xD 0xA. 0xD-символ возврата каретки. ^M происходит так, как vim отображает 0xD (0x0D = 13, M-13-я буква в английском алфавите).

вы можете удалить все ^M символы, выполнив следующее:

:%s/^M//g

здесь ^M вводится, удерживая нажатой клавишу Ctrl и введя v следовал по m, и после освобождения Ctrl. Это иногда сокращается как ^V^M, но обратите внимание, что вы должны ввести его, как описано в предыдущем предложении, а не вводить его буквально.

это выражение заменит все вхождения ^M с пустой строкой (т. е. ничего). Я использую это, чтобы избавиться от ^M в файлах, скопированных из Windows в Unix (Solaris, Linux, OSX).

:%s/\r//g 

работала на меня сегодня. Но моя ситуация, возможно, была немного другой.

чтобы перевести новую строку вместо ее удаления:

:%s/\r/\r/g

это, вероятно, означает, что у вас есть возврат каретки (разные операционные системы используют разные способы сигнализации конца строки).

использовать dos2unix чтобы исправить файлы или установить fileformats в vim:

set ffs=unix,dos

допустим, ваш текстовый файл - файл.txt, затем выполните эту команду -

dos2unix file.txt 

он преобразует текстовый файл из dos в формат unix.

в Unix, вероятно, проще использовать команду 'tr'.

cat file1.txt | tr "\r" "\n" > file2.txt

Я удалил их все с sed:

sed -i -e 's/\r//g'

также можно заменить другой строкой или символом:

sed -i -e 's/\r/string/g'

Я получил текстовый файл, первоначально созданный на машине Windows с помощью пользователя Mac, и мне нужно было импортировать его в Linux MySQL DB с помощью

вы можете исправить это в Vim с помощью

:1,$s/^V^M//g

где ^ - символ контроля.

если он нарушает вашу конфигурацию, и символы ^M требуются в сопоставлениях, вы можете просто заменить символы ^M на <Enter> или даже <C-m> (оба набраны как простые последовательности символов, так 7 и 5 символов соответственно).

это единственный рекомендуемый, портативный способ хранения специальных кодов ключей в сопоставлениях

во FreeBSD вы можете очистить ^M вручную введите следующее:

:%s/Ctrl+V, потом Ctrl+M, потом Ctrl+M еще раз.

это единственное, что сработало в моем случае:

:e ++ff=dos

:wq

Я обнаружил, что я загрязняю файлы в течение нескольких недель из-за того, что мой экземпляр Homebrew Mvim был настроен на использование filetype=dos. Внес необходимые изменения .vimrc....

попробовать :%s/\^M// по крайней мере это работало для меня.

если вы не указали другой fileformat умышленно (скажем, :e ++ff=unix для файла Windows), вполне вероятно, что целевой файл имеет смешанные EOLs.

например, если файл имеет несколько строк с <CR><NL> окончания и другие с <NL> концовки, и fileformat установлено значение unix автоматически Vim при чтении его,^M (<CR>) появится. В таких случаях fileformats вступает в игру. Смотрите :help ffs за подробностями.

Comments

    Ничего не найдено.