'Vim Error: E474: Invalid argument: listchars=tab:»·,trail:·
Summary:
I am receiving the following error for having the below line in my .vimrc file
Error:
E474: Invalid argument: listchars=tab:»·,trail:·
.vimrc:
set list listchars=tab:»·,trail:·
I have researched this and it appears to have something to do with UTF-8 encoding being properly set.
System Setup:
lsb_release:
Distributor ID: Ubuntu
Description: Ubuntu 12.04 LTS
Release: 12.04
Codename: precise
Locale:
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
Solution 1:[1]
None of the other solutions worked for me.
My listchars
looks like this:
listchars=eol:~,tab:>.,trail:~,extends:>,precedes:<,space:_
The problem was that my Vim is too old for the space:
parameter in listchars
. As we can read in this post (I modified the quote to make it more readable):
space:
was added tolistchars
inv7.4.710
on 2015-04-21 by Bram. The stock Debian install of Vim doesn't offerspace:
.
The removal of the trailing ,space:_
solves the problem.
But wait! I want my vimrc to be portable
Well, as 816-8055 suggests you might use if has()
in your vimrc:
if has("patch-7.4.710")
listchars=eol:~,tab:>.,trail:~,extends:>,precedes:<,space:_
else
listchars=eol:~,tab:>.,trail:~,extends:>,precedes:<
endif
Solution 2:[2]
Just placing set encoding=utf8
anywhere in my _vimrc, but before set lcs=tab:>-,trail:·,nbsp:·,extends:>,precedes:<
solved it
Solution 3:[3]
Not a real solution to your specific problem, but another (non-utf8-safe) way might be just to use ASCII chars, like this:
set listchars=tab:>-,trail:.,precedes:<,extends:>
If you have UTF-8 available, Justins solution is the better one of course.
Solution 4:[4]
The tab character should be of the form XY
i.e. two characters. Answered here.
Solution 5:[5]
This isn't the problem here, but may help others with the same error: if your values include a space, you must escape it so vim doesn't parse the list as separate arguments.
:set listchars=tab:>\ ,trail:~,...
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | Dyno Fu |
Solution 3 | Benjamin Marwell |
Solution 4 | Rajeshkumar K |
Solution 5 | scatter |