【问题标题】:How to view UTF-8 Characters in VIM or Gvim如何在 VIM 或 Gvim 中查看 UTF-8 字符
【发布时间】:2011-03-02 11:11:31
【问题描述】:

我不时在涉及非英文脚本的网页上工作,其中大多数使用 utf-8 字符集,VIM 和 Gvim 无法正确显示 UTF-8 字符。

在 Windows 7 64 位上使用 VIM 7.3.46,在 _vimrc 中使用 set guifont=Monaco:h10

有没有办法解决这个问题?

更新:我搜索了一下,发现 set guifontwide 是区域语言的第二个后备选项。

我在 _vimrc 中添加了以下几行,我的大部分问题都得到了解决。

set enc=utf-8
set fileencoding=utf-8
set fileencodings=ucs-bom,utf8,prc
set guifont=Monaco:h11
set guifontwide=NSimsun:h12

上面的 NSimsun 字体适用于中文,问题是我不知道他们是如何让字体名称与 VIM 一起使用的,Courier New 被提到为Courier_New 并且NSimsun 不在字体目录中。我要使用的字体是Latha 但是,我不知道如何在 _vimrc 文件中使用它。 set guifontwide=latha:h12set guifontwide=Latha:h12 不起作用。

如果我成功将guifontwide设置为latha,那么我的问题就解决了,怎么办?

【问题讨论】:

  • 'guifont'的值和'guifontwide'的值是多少?另外,您使用的是什么操作系统以及 vim 的版本?
  • Sathish,你能找到任何解决方案吗?我正在尝试使用 eKalappai 软件输入 gVim,但 vim 只显示给我??字符(显然以相同的方式保存它们)。
  • @sundar No. 我放弃了:|
  • 我的问题是 inconsolata-g 不支持我的文档中的 utf-8 字符。
  • 使用set guifontwide=NSimsun:h12 对我来说失败了,说“无效的宽字体”可能是同一个非等宽问题?

标签: vim


【解决方案1】:

你试过了吗

:set encoding=utf-8
:set fileencoding=utf-8

?

【讨论】:

  • 这两种设置我都试过了,还是看不到 utf-8 字符。
  • -1。实际上这行不通。这些选项都不会重新加载文件。第一个将修改 vim 在内部存储缓冲区(和其他内容)的方式,第二个将指定您希望更改已加载到缓冲区中的文件的编码,这将在保存时应用。
  • :set encoding=utf8 WILL 刷新缓冲区,如果问题出在不正确的编码上,它会修复它。我添加了set fileencoding=utf8 选项,这样您在保存时就不会遇到最令人困惑的“无法转换某些字符”错误。
  • 设置编码有效。我将 set encoding=utf8 添加到 .vimrc 文件,现在 utf8 一切正常。
  • 在 OSX 上,我已将这两行(不带冒号)添加到我的 ~/.vimrc 中,效果很好
【解决方案2】:

尝试使用以下方法重新加载文档:

:e! ++enc=utf8

如果可行,您应该更改 .vimrc 中的 fileencodings 设置。

【讨论】:

  • 对我没有任何改变
  • 请勿在保存您的工作之前运行此程序,因为它会清除您所做的更改。 :u 会救你。
  • 当你这样做时,这也会将文件设置为只读,所以你还需要运行:set noro
  • 谢谢。在我的情况下,Vim 没有呈现 utf-8,因为我有一个二进制数据块(多部分/表单数据附件部分)。当我执行 :e! ++enc=utf8 时,它确实渲染了 utf-8,但在文件中抱怨 [ILLEGAL BYTE in line 286](第一个二进制部分行)。我猜默认行为是在打开 Vim 时默默地退回到其他编码。不过,出于某种原因,echo &enc 在这种情况下仍会报告 utf-8。
  • @DmitryMinkovsky, &enc 是 vim 内部用于存储缓冲区内容的编码。包含当前文件编码的设置是&fenc
【解决方案3】:

如果日本人来这里,请将以下几行添加到您的~/.vimrc

set encoding=utf-8
set fileencodings=iso-2022-jp,euc-jp,sjis,utf-8
set fileformats=unix,dos,mac

【讨论】:

    【解决方案4】:

    在 Microsoft Windows 上,gvim 不允许您选择非等宽字体。不幸的是,Latha 是一种非等宽字体。

    有一种 hack 方法可以实现它:使用 FontForge(您可以从 http://www.geocities.jp/meir000/fontforge/ 下载 Windows 二进制文件)编辑 Latha.ttf 并将其标记为等宽字体。这样做:

    1. 加载 fontforge,选择 latha.ttf。
    2. 菜单:元素 -> 字体信息
    3. 从“字体信息”对话框的左侧列表中选择“OS/2”
    4. 选择“Panose”标签
    5. 设置比例 = 等宽
    6. 保存此字体的新 TTF 版本,试试看!

    祝你好运!

    【讨论】:

    • 我无法将 latha 字体更改为等宽字体。我完全按照您的步骤操作,但保存的文件仍然不能用作等宽字体:(
    • @Sathish Manohar 1) 覆盖现有的 TTF 文件,重新启动 Windows,然后尝试。或 2) 您可以将 TTF 保存到新文件并修改字体名称。安装新的 TTF 文件。这种新字体应该在您的列表中可用。
    • 经过这么多年(7 年)之后,VIM 有几种免费字体可用。谷歌 Noto 字体google.com/get/noto;和 Iosveka github.com/be5invis/Iosevka/releases 是非常好的评估替代方案。
    【解决方案5】:

    在 Linux 中,打开 VIM 配置文件

    $ sudo -H gedit /etc/vim/vimrc
    

    添加了以下几行:

    set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
    set termencoding=utf-8
    set encoding=utf-8
    

    保存退出,终端命令:

    $ source /etc/vim/vimrc
    

    此时vim会正确显示中文。

    【讨论】:

      【解决方案6】:

      这对我有用,不需要更改任何配置文件

      vim --cmd "set encoding=utf8" --cmd "set fileencoding=utf8" fileToOpen

      【讨论】:

        【解决方案7】:

        这个问题同时解决了吗?

        我遇到的问题是 gvim 没有显示 所有 unicode 字符(但只有一个子集,包括变音符号和重音字符),而 :set guifont? 是空的;见my question。阅读此处后,将guifont 设置为合理的值对我来说是固定的。但是,我不需要超过 2 个字节的字符。

        【讨论】:

        • guifont 的合理价值是什么?你放了什么?
        • 我在this answer 中列出了对我有用的值。
        【解决方案8】:

        我无法让我安装的任何其他字体显示在我的 Windows GVim 编辑器中,所以我只是切换到Lucida Console,它至少支持更好的 UTF-8。将此添加到 _vimrc 的末尾:

        " For making everything utf-8
        set enc=utf-8
        set guifont=Lucida_Console:h9:cANSI
        set guifontwide=Lucida_Console:h12
        

        现在我至少看到了一些 UTF-8 字符。

        【讨论】:

        • 在我的情况下,cANSI 必须更改为 cGREEK(在 GVim 中编辑 -> 选择字体...),使用 Consolas 字体,以便正确显示带有希腊字符的 UTF-8 编码文本文件
        【解决方案9】:

        在 Windows gvim 上只需选择“Lucida Console”字体。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-21
          • 2016-03-09
          • 1970-01-01
          • 2014-04-15
          • 2017-06-19
          • 2011-06-14
          相关资源
          最近更新 更多