gpt4 book ai didi

Vim 的编码选项

转载 作者:行者123 更新时间:2023-12-03 13:48:20 26 4
gpt4 key购买 nike

尽管 Vim 的帮助是一个信息宝库,但在某些情况下,我觉得它令人难以置信。它对不同编码相关选项的解释就是这样一种情况。

有人可以简单地向我解释一下编码,文件编码和文件编码设置做什么,我该怎么做
a) 查看当前文件的编码?
b) 改变当前文件的编码?
c) 做一些经常使用但现在让我忘记的事情?

最佳答案

  • encoding Vim 使用它来了解它支持的字符集以及字符在内部是如何存储的。

    您不应该真正修改此设置 ;它应该默认为 Unicodeish。否则,您将无法读取和写入具有扩展字符集的文件。
    :set encoding=utf-8在您的 vimrc 开头如果您不确定,请不要再使用该设置,除非您必须为一个 1 字节编码的 session 读取大文件。
  • fileencoding存储当前缓冲区的编码。
    你可以读写这个变量它会做你想做的事。
    当您修改它时,该文件将被标记为已修改,当您将它(:w:up)保存到磁盘时,它将使用您指定的编码写入。
  • fileencodings告诉 Vim 如何检测你读取的每个文件的编码(以确定 fileencoding 的值)。它是一个编码列表,按顺序尝试,与文件二进制内容一致的第一个编码被假定为您正在阅读的文件的编码。
    设置一次,然后忘记它。 如果您知道要打开大量文件并且它们都使用相同的编码,并且您不想浪费时间尝试检查其他编码,则可能需要更改它。默认为 ucs-bom,utf8,latin1如果您在西欧,这是很好的 IMO,因为几乎所有文件都将以正确的编码打开。但是,使用此设置,当您打开纯 ASCII 文件(即,在 UTF8 和任何基于拉丁语的代码页编码中哪个字节表示形式相同)时,文件将被假定为 UTF8,并按原样保存。
    示例:如果您设置 fileencodingslatin1,utf8 ,您打开的每个文件都将被读取为 latin1因为尝试使用 latin1 编码读取文件永远不会失败:256 个可能的字节值和字符集中的单个字符之间存在双射。
    相反,如果您尝试 fileencodings=ucs-bom,utf8,latin1 Vim 将首先检查字节顺序标记并使用 BOM 解码 Unicode 文件,然后如果失败(无 BOM)尝试以 UTF-8 读取文件,如果失败(因为 UTF8 中的某些字节序列无效)在 latin1 中打开您的文件.
  • 为了重新加载具有正确编码的文件(fileencodings 无法正常工作的情况),您可以执行以下操作::e! ++enc=<the_encoding> .

  • tl;博士:
  • 查看当前文件的编码::echo &fileencoding (较短::echo &fenc:set fenc?:verb set fenc? )
  • 更改当前文件的编码::set fenc=… …然后调用:w你想要多少次。
  • 使用正确的编码重新加载文件::e! ++enc=…
  • 关于Vim 的编码选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8121609/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com