Pao*_*olo 65 vim character-encoding unicode
我想为一个提供翻译字符串的开源项目做出贡献。他们的要求之一是贡献者必须使用 UTF-8 作为 PO 文件的编码。
我在 Linux 上使用 VIM 7.3。我如何确定 VIM 的编码设置为 UTF-8,以便我可以以正确的方式编辑和保存 .po 文件?
Met*_*aEd 73
当 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 如何检测文件编码的更多信息,请参阅Vim 文档中的
fileencodings
选项。
有关设置Vim的内部使用编码的更多信息,请参阅该encoding
选项。
如果你需要重写编写一个文件恢复到磁盘时使用的编码,看到的fileencoding
选项。