如何将 Vim 的默认编码设置为 UTF-8?

如何将 Vim 的默认编码设置为 UTF-8?

我想通过提供翻译后的字符串来为开源项目做出贡献。他们的要求之一是贡献者必须使用 UTF-8 作为编码采购订单文件

我在 Linux 上使用 Vim 7.3。我如何确定 Vim 的编码设置为 UTF-8,以便我可以以正确的方式编辑和保存 PO 文件?

答案1

当 Vim 读取现有文件时,它会尝试检测文件编码。当写出文件时,Vim 使用它检测到的文件编码(除非你以不同的方式告诉它)。因此,检测为 UTF-8 的文件将写入为 UTF-8,检测为 Latin-1 的文件将写入 Latin-1,依此类推。

默认情况下,检测过程是粗略的。使用 Vim 打开的每个文件都将被假定为 Latin-1,除非它在顶部检测到 Unicode 字节顺序标记。没有字节顺序标记的 UTF-8 文件将难以编辑,因为任何多字节字符都将在缓冲区中显示为字符序列而不是单个字符。

更糟糕的是,Vim 默认使用 Latin-1 来表示缓冲区中的文本。所以一个UTF-8文件字节顺序标记将因向下转换为 Latin-1 而被破坏。

解决方案是将 Vim 配置为在内部使用 UTF-8。事实上,这是 Vim 文档中推荐的,并且它没有以开箱即用的方式配置的唯一原因是为了避免在希望 Vim 基本上作为 Latin-1 编辑器运行的用户中造成巨大的混乱。

在您的 中.vimrc,添加set encoding=utf-8并重新启动 Vim。

或者,设置LANG环境变量以指示 UTF-8 是您的首选字符编码。这不仅会影响 Vim,还会影响任何依赖于LANG确定如何表示文本的软件。例如,要指示文本应以en美国所说的英语 ( )出现US,编码为 UTF-8 ( utf-8),请设置LANG=en_US.utf-8

现在 Vim 将使用 UTF-8 来表示缓冲区中的文本。另外,它还将更加坚决地检测文件中的 UTF-8 编码。除了查找字节顺序标记之外,它还会在回退到 Latin-1 之前检查没有字节顺序标记的 UTF-8。因此,它不会再损坏以 UTF-8 编码的文件,并且应该在编辑会话期间正确显示 UTF-8 字符。

有关 Vim 如何检测文件编码的更多信息,请参阅fileencodingsVim 文档中的选项

有关设置 Vim 内部使用的编码的更多信息,请参见选项encoding

如果您需要覆盖将文件写回磁盘时使用的编码,请参阅选项fileencoding

答案2

根据维姆文档vim 尝试自动检测文件编码,因此如果您正在编辑现有文件你应该表现得很好。

如果您愿意,您可以随时强制编码:set fileencodings=utf-8。你可以找到文档这里

相关内容