Vim错误:E474:无效参数:listchars = tab:»·,trail:·

概要:

我在.vimrc文件中收到以下错误信息

错误:

E474: Invalid argument: listchars=tab:»·,trail:· 

.vimrc中:

 set list listchars=tab:»·,trail:· 

我已经研究过这个,它似乎与正确设置的UTF-8编码有关。

系统设置:

lsb_release:

 Distributor ID: Ubuntu Description: Ubuntu 12.04 LTS Release: 12.04 Codename: precise 

地点:

 LANG=en_US.UTF-8 LANGUAGE= LC_CTYPE="en_US" LC_NUMERIC="en_US" LC_TIME="en_US" LC_COLLATE="en_US" LC_MONETARY="en_US" LC_MESSAGES="en_US" LC_PAPER="en_US" LC_NAME="en_US" LC_ADDRESS="en_US" LC_TELEPHONE="en_US" LC_MEASUREMENT="en_US" LC_IDENTIFICATION="en_US" LC_ALL=en_US 

解:

在.vimrc的顶部放置以下几行提到的错误:

.vimrc中:

 scriptencoding utf-8 set encoding=utf-8 

没有其他解决scheme为我工作。

我的listchars看起来像这样:

 listchars=eol:~,tab:>.,trail:~,extends:>,precedes:<,space:_ 

问题是我的Vim对于listcharsspace:参数太旧了。 正如我们可以阅读这篇文章 (我修改了报价,使其更具可读性):

space: 2015-04-21被Bram添加到listcharsv7.4.710 。 Vim的股票Debian安装不提供space:

尾随,space:_的去除,space:_解决了问题。


可是等等! 我想我的vimrc是可移植的

那么,正如816-8055build议你可以在你的vimrc中使用if has()

 if has("patch-7.4.710") listchars=eol:~,tab:>.,trail:~,extends:>,precedes:<,space:_ else listchars=eol:~,tab:>.,trail:~,extends:>,precedes:< endif 

对于您的具体问题,不是真正的解决scheme,但另一种(非UTF8安全)的方式可能只是使用ASCII字符,如下所示:

 set listchars=tab:>-,trail:.,precedes:<,extends:> 

如果你有UTF-8,Justins的解决scheme当然是更好的。