如何在VIM或Gvim中查看UTF-8字符
我经常处理涉及非英语脚本的网页,其中大多数使用utf-8字符集,VIM和Gvim不能正确显示utf-8字符 在64位windows 7上使用VIM 7.3.46,在vimrc中设置guifont=Monaco:h10 有办法解决这个问题吗 更新:我在谷歌上搜索发现,如何在VIM或Gvim中查看UTF-8字符,vim,Vim,我经常处理涉及非英语脚本的网页,其中大多数使用utf-8字符集,VIM和Gvim不能正确显示utf-8字符 在64位windows 7上使用VIM 7.3.46,在vimrc中设置guifont=Monaco:h10 有办法解决这个问题吗 更新:我在谷歌上搜索发现,set-guifontwide是区域语言的第二个后备方案 我在vimrc中添加了以下几行,我的大多数问题都得到了解决 set enc=utf-8 set fileencoding=utf-8 set fileencodings=ucs
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\u New
而且NSimsun
不在字体目录中。我想使用的字体是Latha
,但我不知道如何在_vimrc文件中使用它set guifontwide=latha:h12
或set guifontwide=latha:h12
不起作用
如果我成功地将guifontwide
设置为latha
,那么我的问题将得到解决,如何解决?您尝试过吗
:set encoding=utf-8
:set fileencoding=utf-8
?尝试使用以下方法重新加载文档:
:e! ++enc=utf8
如果这样做有效,您可能应该在Microsoft Windows上更改.vimrc.中的
文件编码设置,gvim将不允许您选择非等距字体。不幸的是,Latha是一种非等距字体
有一种黑客方法可以做到这一点:使用(您可以从下载Windows二进制文件)编辑Latha.ttf并将其标记为单间距字体。这样做:
加载fontforge,选择latha.ttf
菜单:元素->字体信息
在“字体信息”对话框的左侧列表中选择“OS/2”
选择“全景”选项卡
设置比例=单间隔
保存此字体的新TTF版本,请试用李>
祝你好运 这个问题同时解决了吗
我的问题是,gvim没有显示所有unicode字符(但仅显示一个子集,包括umlauts和重音字符),而:set guifont?
为空;看见阅读本文后,将guifont
设置为合理的值为我解决了这个问题。但是,我不需要超过2字节的字符。我无法在我的Windows GVim编辑器中显示我安装的任何其他字体,所以我只是切换到了Lucida Console
,它至少有更好的UTF-8支持。将此添加到\u vimrc
的末尾:
" For making everything utf-8
set enc=utf-8
set guifont=Lucida_Console:h9:cANSI
set guifontwide=Lucida_Console:h12
现在我至少看到一些UTF-8字符 如果日本人来这里,请在~/.vimrc
set encoding=utf-8
set fileencodings=iso-2022-jp,euc-jp,sjis,utf-8
set fileformats=unix,dos,mac
在Windows gvim上,只需选择“Lucida Console”字体。在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将正确显示中文。这对我来说是可行的,不需要更改任何配置文件
vim--cmd“set encoding=utf8”--cmd“set fileencoding=utf8”fileToOpen
什么是'guifont'
的值和'guifontwide'
的值?另外,您使用的是什么操作系统以及vim的哪个版本?Sathish,您能找到解决方案吗?我试图用eKalappai软件输入gVim,但vim只向我显示??字符(显然是以同样的方式保存的)。@sundar No.我放弃了:|我的问题是InColata-g不支持我文档中的utf-8字符。使用set guifontwide=NSimsun:h12
对我来说失败,表示“无效的宽字体”可能是同一个非单空格问题?我已经尝试了这两种设置,我仍然看不到utf-8字符。实际上,这是行不通的。这两个选项都不会重新加载文件。第一个选项将修改vim在内部存储缓冲区(和其他内容)的方式,第二个选项将指定您希望更改已加载到缓冲区中的文件的编码,这将在保存时应用。:set encoding=utf8
将刷新缓冲区,如果编码不正确,它将修复该问题。我添加了set fileencoding=utf8
选项,这样您就不会在保存时遇到最令人困惑的“无法转换某些字符”错误。set encoding有效。我在.vimrc文件中添加了set encoding=utf8,现在utf8一切正常。在OSX上,我在我的~/.vimrc
中添加了这两行(没有冒号),效果很好。我无法将latha字体更改为monospace。我完全按照您的步骤操作,但保存的文件仍然不能作为单间距字体使用:(@Sathish Manohar 1)覆盖现有的TTF文件,重新启动Windows,然后重试。或者2)您可以将TTF保存到新文件并修改字体名称。安装新的TTF文件。这个新字体应该会出现在你的列表中。在所有这些年(7年)之后,VIM有几个可用的免费字体。谷歌Noto字体;和Iosveka是非常好的评估替代方案。meDO不会更改任何内容。在保存您的工作之前,不要运行它,因为它将擦除您所做的更改<代码>:u
将保存您的文件。同时,这样做会将文件设置为只读,因此您还需要运行:set noro
,谢谢。在我的例子中,Vim没有呈现utf-8,因为我有一个二进制数据块(多部分/表单数据附件部分)。当我做的时候,:e++enc=utf8,它确实渲染了utf-8,但在文件中抱怨了[第286行中的非法字节]
(第一个二进制部分行)。我猜默认的行为是在Vim打开时悄悄地退回到其他编码。然而,出于某种原因,echo&enc
在这种情况下仍然报告utf-8。@DmitryMinkovsky,&enc
是vim内部用于存储缓冲区内容的编码。包含当前文件编码的设置是&fenc
guifont的合理值是多少?你输入了什么?我在中列出了对我有效的值。在我的情况下,cANSI必须更改为cGREEK(编辑->选择)