如何让vim listchar在非utf8环境下工作?


8

我的.vimrc包含:

if $LANG =~ '\(UTF\|utf\)-\?8' || $LC_CTYPE =~ '\(UTF\|utf\)-\?8'
  set list listchars=tab:»·,trail:~,extends:>,precedes:<
endif

但是有一些字符是unicode,当我在LC_CTYPE = zh_TW.Big5环境下运行vim时,它将显示

Error detected while processing /home/user/.vimrc:
  line   70:
E474: Invalid argument: listchars=tab:»·,trail:~,extends:>,precedes:<

Answers:


5

将以下行添加到您的vimrc中,最好在开头附近:

scriptencoding utf-8

即使您使用的是非UTF系统,这也会告诉vim以UTF8格式读取文件。然后它将把其中的任何字符转码为您当前的编码。如果您在listchars选项中使用的字符存在,则您所使用的其他编码甚至都不需要附带条件。


该方法在vim上有效,但是我发现gvim仍然显示该错误消息。
Daniel YC Lin

1
您是否.gvimrc还包含Unicode字符的文件?如果是这样,将相同的行添加到该文件应该也可以解决该问题。该命令仅适用于在其中找到该命令的文件,因此将需要包含在任何字符编码很重要的vim配置文件中。
qqx 2013年

我发现了由我的gvimrc引起的问题,并将其修复。
Daniel YC Lin
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.