目录
文本文件行末 ^M 删除
^M 字符源于不同操作系统对文本文件换行的不同定义。在 DOS/Windows 里,文本文件的换行符为 \r\n
,而在 *nix 系统里则为 \n
,所以 DOS/Windows 里编辑过的文本文件到了 *nix 里,每一行都多了个 ^M。所以 ^M 只是一个换行符号,没有实际的用处,可以保留,也可以删除。
删除方法:
vim 中 使用 %s/\r//g
即可。
打开文本文件乱码
Windows 中编辑的带有中文的 vim 文件在 Linux 中打开乱码。
乱码问题与 vim 中字符的编码有关,在 vim 中,几个选项会影响对多字节编码的支持:
- encoding(enc)
vim 的内部使用编码,encoding 的设置会影响 vim 内部的 Buffer、消息文字等。在 Unix环境下,encoding 的默认设置等于 locale;Windows 环境下会和当前代码页相同。在中文 Windows 环境下 encoding 的默认设置是 cp936(GBK)。 -
fileencodings(fencs)
vim 在打开文件时会根据 fileencodings 选项来识别文件编码,fileencodings 可以同时设置多个编码,vim 会根据设置的顺序来猜测所打开文件的编码。 -
fileencoding(fenc)
vim 在保存新建文件时会根据 fileencoding 的设置编码来保存。如果是打开已有文件,vim 会根据打开文件时所识别的编码来保存,除非在保存时重新设置 fileencoding。 -
termencodings(tenc)
在终端环境下使用 vim 时,通过 termencoding 项来告诉 vim 终端所使用的编码。
(1) Option 1
在 .vimrc 中加入如下内容
set termencoding=utf-8
set encoding=utf8
set fileencodings=utf8,ucs-bom,gbk,cp936,gb2312,gb18030
(2) Option 2
指定以 cp936 格式重新加载文件。
:e ++enc=cp936