Ответ 1
Решение:
Поместите следующие строки вверху .vimrc в сообщении об ошибке:
.vimrc:
scriptencoding utf-8
set encoding=utf-8
Резюме:
Я получаю следующую ошибку для того, чтобы следующая строка в моем файле .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
Ни один из других решений не работал у меня.
Мой listchars
выглядит следующим образом:
listchars=eol:~,tab:>.,trail:~,extends:>,precedes:<,space:_
Проблема заключалась в том, что мой Vim слишком стар для параметра space:
в listchars
. Как мы можем прочитать этот пост (я изменил цитату, чтобы сделать ее более читаемой):
space:
был добавлен вlistchars
вv7.4.710
в 2015-04-21 by Bram. В дистрибутиве Debian Vim не предлагаетсяspace:
.
Удаление конечного ,space:_
решает проблему.
Хорошо, поскольку 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
Не настоящее решение вашей конкретной проблемы, но другой (не-utf8-safe) способ может быть просто для использования символов ASCII, например:
set listchars=tab:>-,trail:.,precedes:<,extends:>
Если у вас есть UTF-8, решение Justins, конечно, лучше.