Linux中vim修改文件默认编码需区分encoding(内部编码,应设为utf-8)和fileencoding(保存编码,决定写入格式);查看用:set fileencoding和:set encoding;临时转换用:e ++enc=gbk重读再:set fileencoding=utf-8保存;永久配置需在~/.vimrc中设置set encoding=utf-8、set fileencodings=ucs-bom,utf-8,cp936,gb18030,latin1、set fileencoding=utf-8。

Linux 中用 vim 修改文件的默认编码格式,核心是区分“vim 自身的内部编码”和“当前文件的保存编码”,两者不能混为一谈。修改的关键在于正确设置 fileencoding(文件保存用的编码),而不是仅改 encoding(vim 内部处理用的编码)。
查看当前文件的实际编码
在 vim 中打开文件后,按 Esc 进入命令模式,输入:
-
:set fileencoding—— 显示当前文件将被保存为哪种编码(如 utf-8、latin1、gb2312 等) -
:set encoding—— 显示 vim 内部使用的编码(一般应设为 utf-8,影响菜单、消息等显示)
注意:fileencoding 为空时,vim 会按 fileencodings 列表自动探测,但不一定准确;手动设置才能确保保存时用指定编码。
临时修改单个文件的保存编码
适用于只想把当前这个文件转成 UTF-8 并保存的场景:
- 确认已进入 vim 编辑界面(非插入模式)
- 输入命令:
:set fileencoding=utf-8 - 再执行保存:
:wq或:w
这样文件就会以 UTF-8 编码重新写入磁盘。如果原内容含 GBK 字符而未正确解码,可能先乱码——此时需配合 :e ++enc=gbk 重新以 GBK 读入,再设 fileencoding=utf-8 保存。
让 vim 默认用 UTF-8 保存新文件
编辑或新建 ~/.vimrc,加入以下几行:
-
set encoding=utf-8—— 设 vim 内部统一用 UTF-8 -
set fileencodings=ucs-bom,utf-8,cp936,gb18030,latin1—— 读文件时按此顺序尝试识别编码(把 utf-8 放前面) -
set fileencoding=utf-8—— 新建/未指定编码的文件默认保存为 UTF-8
保存退出后,重启 vim 即生效。之后新建文件或未带 BOM 的文本,基本都会按 UTF-8 处理和保存。
处理乱码文件的实用流程
当打开一个中文文件显示为乱码,说明 vim 没正确识别原始编码:
- 先用
:set fileencoding?看当前识别结果(常为 latin1) - 尝试重载:比如原文件是 GBK,输入
:e ++enc=gbk(或cp936) - 确认显示正常后,再运行
:set fileencoding=utf-8和:wq - 也可用
file -i filename或enca filename辅助判断原始编码
不复杂但容易忽略


















