首页 文章

^ M字符在Vim中意味着什么?

提问于
浏览
422

我一直在我的vimrc中获得 ^M 字符,这会破坏我的配置 .

15 回答

  • 0

    这是我唯一有效的方法:

    :e ++ff=dos

    :wq

  • 5

    我发现由于我的Homebrew Mvim实例设置为使用filetype = dos,我几周来一直在污染文件 . 在.vimrc中进行了必要的更改....

  • 36

    试试 :%s/\^M// 至少这对我有用 .

  • 114

    如果它破坏了您的配置,并且映射中需要^ M个字符,您可以简单地用 <Enter> 或甚至 <C-m> 替换^ M个字符(两者都键入为简单字符序列,分别为7和5个字符) .

    这是在映射中存储特殊密钥代码的单一推荐便携方式

  • 7

    Unix使用0xA作为换行符 . Windows使用两个字符的组合:0xD 0xA . 0xD是回车符 . ^M 恰好是vim显示0xD的方式(0x0D = 13,M是英文字母中的第13个字母) .

    您可以通过运行以下命令删除所有 ^M 个字符:

    :%s/^M//g
    

    通过按住Ctrl并键入v后跟m,然后释放Ctrl,输入 ^M . 这有时缩写为 ^V^M ,但请注意,您必须按照上一句中的描述输入它,而不是按字面输入 .

    此表达式将用空字符串替换所有出现的 ^M (即没有) . 我用这个来摆脱从Windows复制到Unix(Solaris,Linux,OSX)的文件中的 ^M .

  • 2
    :%s/\r//g
    

    今天为我工作 . 但我的情况可能略有不同 .

  • 6

    翻译新行而不是删除它:

    :%s/\r/\r/g
    
  • 15

    这可能意味着你有回车(不同的操作系统使用不同的方式发信号通知行尾) .

    使用 dos2unix 修复文件或在vim中设置文件格式:

    set ffs=unix,dos
    
  • 0

    假设您的文本文件是 - file.txt,然后运行此命令 -

    dos2unix file.txt
    

    它将文本文件从dos转换为unix格式 .

  • 2

    在Unix中,使用'tr'命令可能更容易 .

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

    我用sed将它们全部删除了:

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

    也可以用不同的字符串或字符替换:

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

  • 0

    我有一个文本文件,最初是通过Mac用户在Windows机器上生成的,需要使用 load data 命令将其导入Linux MySQL数据库 .

    虽然VIM显示'^ M'字符,但上述所有内容都不适用于我的特定问题,数据会导入,但总是以某种方式损坏 . 解决方案最终很容易(经过很多挫折) .

    解决方案:在同一个文件上执行 dos2unix TWICE 就可以了!使用 file 命令可以显示沿途发生的情况 .

    $ file 'file.txt'
    file.txt: ASCII text, with CRLF, CR line terminators
    
    $ dos2unix 'file.txt'
    dos2unix: converting file file.txt to UNIX format ...
    $ file 'file.txt'
    file.txt: ASCII text, with CRLF line terminators
    
    $ dos2unix 'file.txt'
    dos2unix: converting file file.txt to UNIX format ...
    $ file 'file.txt'
    file.txt: ASCII text
    

    并且文件的最终版本完美地导入到数据库中 .

  • 461

    你可以使用vim解决这个问题

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

    其中^是控制字符 .

  • 55

    在FreeBSD中,您可以通过键入以下内容手动清除 ^M

    :%s/ Ctrl V,然后按Ctrl M,然后再按Ctrl M.

  • 2

    如果您没有故意指定其他 fileformat (例如,对于Windows文件为 :e ++ff=unix ),则目标文件可能具有混合EOL .

    例如,如果文件的某些行具有 <CR><NL> 结尾而其他行具有 <NL> 结尾,并且Vim在读取时自动将 fileformat 设置为 unix ,则会出现 ^M (<CR>) . 在这种情况下, fileformats 开始发挥作用 . 有关详细信息,请参阅 :help ffs .

相关问题