2014-02-27 23 views
2

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

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

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

请注意,这不是一个“错误的编码”问题,如latin-1而不是utf-8,因为这也会影响变音符号。我知道设置enc,fenc,fencs:e ++enc=utf-8。 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-8,fileencoding=utf-8),并将其保存为Latin-1(:set fenc=latin-1(文件被标记为已更改),更新了标记:w)。我收到了一个转换错误;然而,一些修改已经写好。

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

+1

你的“编码”设置是什么?使用'utf-8'(并且文件格式相同),应该没有理由进行转换,因此不会出现这种错误。 –

+0

我的文件保存为'utf-8'编码,特别是gettext目录('.po')。对于这些,编码包含在“Content-Type”头文件中(并且我希望用于编译到'.mo'文件)。 – Tobias

回答

5

看完How to view UTF-8 Characters in VIM or Gvim这个问题后,我试了几次guifont -settings(:set guifont?什么也没有),而且其中一些功能还有排印引用。

以下guifont设置为我工作我的Windows 8.1系统上:

  • Lucida_Console
  • DejaVu_Sans_Mono
  • Courier_New
  • 索拉

对于guifontwide我发现

  • MS_Mincho

为中国文字工作。

+0

作为这个答案的作者,我想澄清一下,我没有添加'guifontwide'和'MS_Mincho'信息;我对多字节字符集没有任何经验。这应该是一个(对某些观众来说很有用)评论,而不是编辑。 – Tobias

1

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

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

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

在上面的例子中,不是:set encoding=utf-8(这是临时的,只在您的显示器上)和set fileencoding=utf-8这两个文件会在保存时更改文件。

+0

正如我试图从一开始就明确的:这是**而不是**关于使用'utf-8'而不是'latin-1'。这是关于'utf-8'为变音符号工作的,但不适用于_(仅稍微)_更有趣的字符,如引号,短划线和省略号。 – Tobias