탭과 스페이스같은 공백문자는 보통 눈에 보이지 않기에 norm error의 원인이 되고는 한다.
vim에서 공백문자를 보이게 하기 위해서는 .vimrc에 다음과 같이 설정하면 된다.
set list
Bash
복사
혹은 일시적으로만 이용하려면 vim 노말 모드에서 :set list를 입력해도 된다. :set list !로 켜고 끌 수도 있다.
별다른 설정을 하지 않았다면 탭문자가 ^I 와 같이 표시될 것이다. 이래서는 간격도 잘 안맞고 모양도 안예쁘다..고 생각했다.
list 모드에서 각각의 공백문자가 어떻게 표시될지 설정하는 옵션이 listchars이다. (vim에서 :help listchars 참고)
여러가지 옵션이 있지만 그 중 eol (end of line), tab, trail (줄 끝에 달린 스페이스)을 설정해 사용하고 있다.
set listchars=eol:$,tab:\|.,trail:-
Bash
복사
(pipe문자의경우 backslash가 필요해서 넣어주었다)
eol 문자는 $로, trail은 -로, 그리고 tab은 |... 같은 식으로 보이게 된다.
부연하자면 tab:xy[z] 에서 x는 탭을 나타낼 첫 문자, y는 폭에 맞춰 채워질 문자. z (없어도 됨)는 탭의 끝을 나타낼 문자이다.
tab:>- 는 >, >-, >—- 등으로 보이게 되고,
tab:>-<는 >, ><, >-<, >—< 등으로 2번째 문자인 -가 폭에 맞춰 채워지게 된다.
위 설정의 경우 아래와 같이 된다.
색깔바꾸기: vim, neovim의 listchars 설명을 찾아보면 아래에 이런 말이 붙어있다.
vim의 경우:
The "NonText" highlighting will be used for "eol", "extends" and
"precedes". "SpecialKey" for "nbsp", "space", "tab" and "trail".
|hl-NonText| |hl-SpecialKey|
neovim의 경우:
|hl-NonText| highlighting will be used for "eol", "extends" and
"precedes". |hl-Whitespace| for "nbsp", "space", "tab", "multispace",
"lead" and "trail".
Bash
복사
즉 각각이 속한 highlighting group의 색을 바꿔주면 된다.
예를 들어 neovim에서 :hightlight Whitespace guifg=#ddff00 을 입력할 시 다음처럼 tab문자의 색이 바뀐다.