Vim';s编码选项

Vim';s编码选项,vim,Vim,虽然维姆的帮助是一个信息宝库,但在某些情况下,我觉得它令人难以置信。它对不同编码相关选项的解释就是这样一种情况 有人能简单地向我解释一下,编码、文件编码和文件编码设置是做什么的,我怎样才能 a) 查看当前文件的编码? b) 更改当前文件的编码? c) 做一些经常使用的事情,但我现在忘记了吗? 编码被Vim用来了解它支持哪些字符集以及字符是如何在内部存储的 您不应该真正修改此设置;它应该默认为某种非宗教的东西。否则,无法使用扩展字符集读取和写入文件。 如果您不确定,请在vimrc的开始处设置enc

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

有人能简单地向我解释一下,编码、文件编码和文件编码设置是做什么的,我怎样才能
a) 查看当前文件的编码?
b) 更改当前文件的编码?
c) 做一些经常使用的事情,但我现在忘记了吗?

  • 编码
    被Vim用来了解它支持哪些字符集以及字符是如何在内部存储的

    您不应该真正修改此设置;它应该默认为某种非宗教的东西。否则,无法使用扩展字符集读取和写入文件。
    如果您不确定,请在
    vimrc
    的开始处设置encoding=utf-8,并且不要再次使用该设置,除非您必须使用1字节编码在一个会话中读取大文件

  • fileencoding
    存储当前缓冲区的编码。
    您可以读取和写入此变量,它将执行您想要的操作。
    当您修改它时,文件将被标记为已修改,当您将其(
    :w
    :up
    )保存到磁盘时,它将使用您指定的编码写入

  • fileencodings
    告诉Vim如何检测您读取的每个文件的编码(以确定
    fileencoding
    的值)。它是按顺序尝试的编码列表,与文件二进制内容一致的第一个编码被假定为您正在读取的文件的编码。
    设置一次,然后忘记它。如果您知道要打开大量文件,并且它们都使用相同的编码,并且您不想浪费时间检查其他编码,则可能需要更改它。如果您在西欧,默认值是
    ucs bom、utf8、latin1
    ,因为几乎所有文件都将以正确的编码打开。但是,使用此设置,当您打开普通ASCII文件(即,在UTF8和任何基于拉丁语的代码页编码中哪个字节表示形式相同)时,文件将假定为UTF8,并保存为UTF8。
    示例:如果将
    fileencodings
    设置为
    latin1,utf8
    ,则打开的每个文件都将被读取为
    latin1
    ,因为尝试读取使用latin1编码的文件从未失败:256个可能的字节值与字符集中的各个字符之间存在双射。
    相反,如果您尝试
    fileencodings=ucs bom,utf8,latin1
    Vim将首先检查字节顺序标记并使用bom解码Unicode文件,然后如果失败(没有bom),尝试以UTF-8读取您的文件,如果失败(因为utf8中的某些字节序列无效),则在
    latin1
    中打开您的文件

  • 为了使用正确的编码重新加载文件(当
    文件编码
    无法正常工作时),您可以执行以下操作:
    :e++enc=

tl;博士:

  • 查看当前文件的编码:
    :echo和fileencoding
    (较短:
    :echo和fenc
    :set fenc?
    :动词set fenc?
  • 更改当前文件的编码:
    :设置fenc=…
    …然后调用
    :w
    任意次数
  • 用正确的编码重新加载文件:
    :e++enc=…

  • 编码:
    内部代表。查看或设置:

    :set encoding
    :set encoding = utf-8
    
    :set fileencoding
    :set fileencoding = utf-8
    
    :set fileencodings
    :set fileencodings= utf-8,latin-1,cp1251
    
    文件编码:

    写入文件时将使用的表示形式。查看或设置:

    :set encoding
    :set encoding = utf-8
    
    :set fileencoding
    :set fileencoding = utf-8
    
    :set fileencodings
    :set fileencodings= utf-8,latin-1,cp1251
    
    文件编码:

    读取文件时测试的可能编码列表。查看或设置:

    :set encoding
    :set encoding = utf-8
    
    :set fileencoding
    :set fileencoding = utf-8
    
    :set fileencodings
    :set fileencodings= utf-8,latin-1,cp1251
    
    以下是vim文档中可能的编码列表()


    好的,举个例子,如果我有一个编码为cp1250(根据“fenc”)的文件,并且我希望将其保存为utf-8,我该怎么做?@ldigas:首先检查
    cp1250
    是否为真(如果这是真的,那么
    :set-fenc=utf8
    :w
    @Benoit:或者一步一步:
    :w++enc=utf8
    @ib.:是的,这也是可能的,谢谢你指出这一点。@ib:不过,这是一次尝试,如果你这么做了,
    :w++enc enc utf8
    ,请编辑该文件,然后单击此处。)另一次
    :w
    ,该文件不一定保存为utf8。因此,我不建议在使用
    ++enc
    时使用
    :w
    +1来表示“令人难以置信”事情是这样的,imo vim的文档是准确的,但不可用,考虑到软件的高质量和它的坏消息,应该进行返工。vim非常可用,它的文档不是。