在Windows 7上无法使用Gvim和VIM输入Unicode


11

我想使用(g)Vim输入不同的语言。但是,当我使用语言栏(Devanagari或北印度语字符)切换到另一种语言并键入任何内容时,(g)vim显示??? ??

我试过的

write ++enc=utf-8 foo.txt  
set fileencoding=utf-8   
set enc=utf-8

信息:

  • GVim版本:7.4,及其+ multi_byte。
  • 默认vimrc文件中没有更改。

我刚开始(g)vim。


5
可能是字体。您使用哪种字体?
muru

1
gvim中列出了7种字体(consolas,2 courier,2 lucida,fixedsys和terminal)。我尝试了所有这些。虽然我的系统有其他字体过,但GVIM只显示7.我也跟着:stackoverflow.com/questions/3766204/vim-doesnt-support-unicode但仍没有运气。
msinfo 2016年

3
“另一种语言”相当模糊。什么语言?抛光?希伯来语?中文?克林贡?如果您使用的语言晦涩难懂,那么这些字体很可能都不支持该语言。
马丁·图尔诺伊

1
就我而言,我正在尝试使用具有Ubuntu Mono字体的GVim 7.4.800(或更高版本)的Malayalam 。有关示例文本,请参见Malayalam Wikipedia。在Linux(Ubuntu和Arch)上,将终端字体和GVim字体设置为Ubuntu Mono,Malayalam确实会显示,即使有点压缩。我尝试了第二条注释中提到的其他字体msinfo。
muru

1
在Linux上,gvim可以显示所需的字符,因为Pango将从其他字体中提取字形以显示所有字符。这就是为什么字符看起来与文本其余部分不同的原因。如果在xterm中尝试相同的操作,则不会看到所有字符,因为使用了单个字体。我怀疑类似的事情正在Windows上发生。
jamessan

Answers:


5

默认编码似乎是latin1

:set encoding?
  encoding=latin1

输入字符时,Vim尝试将其从输入字符集(可能是Unicode)转换为latin-1。由于latin-1没有这些字符,因此失败。因此,问号。

打开现有文件(用记事本或其他程序保存)会导致文本乱码,因为现在Vim只是尝试读取字节并根据latin-1字符集解释它们,而不是将它们转换为latin-1集。

您将要使用utf-8或诸如此类:

:set encoding=utf-8

之后,Malayalam脚本似乎开始工作。

请注意,这将不会使预先存在的问号起作用。这些实际上在输入时转换为问号(字符0x3f)。无法取回输入的内容。我怀疑这是这个问题引起混淆的根源。

另请参阅:help 'encoding'

附带说明一下,字体中不受支持的字形通常使用不同的字形进行渲染;每种字体会有所不同,但通常是正方形或不同样式的问号。您会看到带有“”字样的“真实”问号和不受支持的字形之间的区别g8


1
我需要输入梵文或北印度文字符。编码以前设置为latin1,根据您对utf-8的建议已将其更改。但是仍然看不到梵文或印地文字符。但是,当我将这些框(由VIM渲染)从VIM复制到浏览器或Notepad ++时,它们看起来像Unicode字符。因此,VIM可以识别但不能显示它们。
msinfo

1
@msinfo您正在使用哪个Vim版本?您提到了7.4,但没有提到补丁程序级别?我从vim.org使用7.4.1024
马丁·图尔诺伊

1
似乎没有修补程序,因为我尝试在vi.stackexchange.com/questions/2466/…上从您的答案之一;-)中找出答案。Vim --version不显示任何补丁信息。安装后,我尚未进行任何插件或补丁程序更改。
msinfo

4
@msinfo Vim 7.4大约在两年半前发布。尝试安装较新的版本。也许这就是所需要的?
马丁·图尔诺伊
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.