51

概括:

我收到以下错误,因为我的 .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
4

5 回答 5

101

解决方案:

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

.vimrc:

scriptencoding utf-8
set encoding=utf-8
于 2013-08-19T19:25:30.437 回答
22

其他解决方案都不适合我。

我的listchars样子是这样的:

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

问题是我的 Vimspace:listchars. 正如我们在这篇文章中所读到的(我修改了引用以使其更具可读性):

space:由 Bram 于 2015 年 4 月 21日添加到listcharsin 。v7.4.710Vim 的普通 Debian 安装不提供space:.

删除尾随,space:_解决了这个问题。


可是等等!我希望我的 vimrc 是可移植的

好吧,正如816-8055建议的那样,您可以if has()在 vimrc 中使用:

if has("patch-7.4.710")
    listchars=eol:~,tab:>.,trail:~,extends:>,precedes:<,space:_
else
    listchars=eol:~,tab:>.,trail:~,extends:>,precedes:<
endif
于 2016-04-02T14:01:50.153 回答
8

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

于 2018-09-05T04:58:45.663 回答
6

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

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

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

于 2014-05-02T12:42:19.113 回答
0

制表符的形式应该是XY两个字符。在这里回答。

于 2021-01-13T07:31:06.917 回答