vim 跨平台问题


文本文件行末 ^M 删除

^M 字符问题源于不同操作系统对文本文件换行的不同定义而导致。

  • Windows/DOS 系统里面,每行结尾是”<回车><换行>”,即 \r\n
  • Unix/Linux 系统里,每行结尾只有“<换行>”,即 \n
  • Mac系统里,每行结尾是”<回车>”。

因此,Unix/Mac 系统下的文件在 Windows 里打开的话,所有文字会变成一行;而 Windows 里的文件在 Unix/Mac 下打开的话,在每行的结尾可能会多出一个 ^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

reference:

  1. https://blog.csdn.net/m0_37806112/article/details/81253292
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇