让Vim在Windows上完全支持UTF-8

时间:2014-02-27 08:59:26

标签: vim utf-8

我在Windows上使用vimgVim,在虚拟Linux框中使用vim进行编程。我经常需要更改gettext目录文件。但是,在两个Windows版本中对Unicode字符的支持似乎都不完整,可能是因为字符集。

例如,变音符号(äöü)工作得很好;但印刷引号(“”或“ˮ”)和其他一些字符(如mdash和ellipse)不会(它们在Linux框中执行)。 Vim抱怨转换错误并以只读模式打开文件;当覆盖它并存储时,这些角色都会被破坏。

其他Windows程序支持这些字符就好了,例如TortoiseSVN的。

请注意,这不是“错误的编码问题,例如latin-1而不是utf-8,因为这也会影响变音符号。我知道设置encfencfencs:e ++enc=utf-8

:version告诉我:版本7.3,MS Windows 32位GUI版本,支持OLE,包括更正1-46; +multi_byte_ime/dyn

更新:更新到Vim 7.4无法解决问题。 +multi_byte_ime/dyn并且,因为现在可以更容易地列出选项:+digraphs-xfontset-postscript(我不知道他们是否感兴趣)。

由于我使用Linux Vim处理相同的文件(仍然是7.3,包括更正1-547),并且通过Samba,现在更新的Windows gVim,我尝试了以下内容:我打开了一个带有Linux版本的目录文件,用来做有趣的引用字符(:set enc? fenc?encoding=utf-8fileencoding=utf-8)并将其保存为Latin-1(:set fenc=latin-1(文件标记已更改),更新了标记,:w)。我收到了转换错误;但是,已经写了一些变化。

当使用相同的Linux版本重新打开文件时,我得到了正确的变音符号encoding=utf-8 / fileencoding=latin-1,但报价字符不正确。

2 个答案:

答案 0 :(得分:7)

在阅读问题How to view UTF-8 Characters in VIM or Gvim之后,我尝试了几个guifont - 设置(:set guifont?没有产生任何结果),其中一些设置了印刷报价。

以下guifont设置适用于我的Windows 8.1系统:

  • Lucida_Console
  • DejaVu_Sans_Mono
  • Courier_New
  • 索拉

guifontwide我找到了

  • MS_Mincho

为汉字工作。

答案 1 :(得分:1)

我能够在Windows上始终如一地将文件编码更改为UTF-8的唯一方法是使用notepad ++或powershell(见下文)。无论VIM版本如何,从VIM内部更改文件编码都会产生不一致的结果。

一旦文件在vim之外设置了UTF-8编码,就没有其他问题了。通过windows或Windows支持通过vim在linux或mac上设置的文件编码。

this thread的powershell命令中建议更改编码。这是我所知道的在windoww上将项目设置为UTF-8并且没有进一步麻烦的最快方式。

在上面的示例中,并非:set encoding=utf-8(暂时且仅在您的显示中)和set fileencoding=utf-8之间存在差异,这将在保存时更改文件。