在 Vim 中添加/显示特殊字符

在 Vim 中添加/显示特殊字符

我目前正在从事一个项目,需要输入 Unicode 字符ɛħ,我刚刚将其添加到我的键盘中。

它几乎在任何地方都能很好地工作,即使在命令提示符中,除了 Vim,它会显示问号?而不是ɛ和。hħ

编码设置为 utf-8 并且使用并:digraphs没有太大的帮助,因为即使在那里,很多字符也只是显示为?

我该如何修复此问题?

编辑
我使用具有上述两个字符的 Consolas 字体。

答案1

从评论问题来看,尽管问题指出“编码设置为 utf-8”,但 Vim 的编码似乎并未设置为 utf-8。它仍然是 latin1 (ISO-8859-1)。这意味着 Vim 不知道如何在内存中表示这些特殊字符,也不知道如何将它们保存到文件中。

为了使 Vim 正确书写“特殊”字符,它需要两样东西:

  1. 可以在内存中表示该字符的“编码”设置,通常为 utf-8
  2. 一个空值,或者一个可以表示磁盘上“文件编码”字符的设置。通常这也是 utf-8,或者为空。

为了正确地包含这些字符的文件,Vim 也需要这两个东西。如果你的 'fileencodings' 选项设置正确,Vim 可以自动检测 'fileencoding' 的正确值。

'fileencodings' 是一个逗号分隔的列表,它按顺序告诉 Vim 尝试哪些编码。问题评论中的“ucs-bom”将检测 unicode,但前提是存在 BOM(字节顺序标记)。此外,由于 Vim 的“编码”仍然是“latin1”,因此即使 Vim 确实检测到了 unicode,它也不会对您有任何帮助。

请注意,'encoding' 和 'fileencodings' 都应该非常靠近 .vimrc 的顶部,位于任何映射、菜单、字符串选项或寄存器设置之前。否则这些区域中的现有文本将被 Vim 误解。

请参阅每个选项的帮助,以及配置 Vim 以支持 Unicode,了解详情。

如果 Vim 即使使用正确的设置也无法正确检测某些文件的编码,您可以:

  1. 手动设置,例如:e ++enc=utf-8 myfile.txt
  2. 安装Vim 插件可以自动检测文件编码

答案2

我在 Debian 中工作,遇到了您描述的问题。要修复它,您需要确保在 Debian Bash 中的操作系统上安装了所需的语言环境,修复方法如下:

  1. 检查你的语言环境

    locale -a
    

    在 bash 中报告:语言环境:无法将 LC_VARIABLE 设置为默认语言环境:没有此文件或目录

  2. 生成所需的语言环境,以便步骤 1 不再抱怨。

    如果你知道你需要什么语言环境,你可以使用 locale-gen 命令来执行此操作

    sudo locale-gen "en_US.UTF-8"
    

    或者通过发出以下命令重新配置语言环境

    sudo dpkg-reconfigure locales
    

如果操作正确,: digraphs现在应该在 vim 中显示正确的字符

https://wiki.debian.org/Locale
http://vim.wikia.com/wiki/Entering_special_characters

相关内容