Vim错误:E474:无效的参数:列表字符=tab:·,trail:·

eulz3vhy  于 2022-11-11  发布在  其他
关注(0)|答案(6)|浏览(160)

摘要:

我收到以下错误,因为我的.vimrc文件中有下面一行

错误:

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

.vimrc:

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

我已经研究了这一点,它似乎与UTF-8编码被正确设置有关。

系统设置:

lsb_释放:

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
tkclm6bt

tkclm6bt1#

解决方案:

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

.vimrc:

scriptencoding utf-8
set encoding=utf-8
laik7k3q

laik7k3q2#

其他的解决方案都不适合我。
我的listchars看起来像这样:

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

问题是我的Vim对于listchars中的space:参数来说太旧了。正如我们在this post中所读到的那样(我修改了引用以使其更可读):
space:由Bram于2015年4月21日添加到v7.4.710中的listchars中。Vim的Debian安装版本不提供space:
删除尾随的,space:_就解决了这个问题。
但是等等!我希望我的vimrc是便携式的
正如816-8055所建议的,您可以在vimrc中使用if has()

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

bjp0bcyl3#

只是把set encoding=utf8放在my _vimrc中的任何地方,但在set lcs=tab:>-,trail:·,nbsp:·,extends:>,precedes:<解决之前

wkftcu5l

wkftcu5l4#

这不是解决您的特定问题的真实的方法,但另一种(非utf8安全)方法可能是使用ASCII字符,如下所示:

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

如果您有UTF-8可用,Justins解决方案当然是更好的一个。

g2ieeal7

g2ieeal75#

制表符的格式应为XY,即两个字符。已回答here

14ifxucb

14ifxucb6#

这不是这里的问题,但可能会帮助其他人解决相同的错误:如果值中包含空格,则必须对其进行转义,这样Vim就不会将列表解析为单独的参数。

:set listchars=tab:>\ ,trail:~,...

相关问题