他人のコード開いたら(自分なら)空白にすべきところがタブになってたり、行末に謎のスペースが連続してたりしてムカッと来ることあるよね。そういう場合にも落ち着いて対処するために、不可視文字を画面に表示する設定がある。
vimでスペースやTabなどの見えない文字を表示させる方法
http://d.hatena.ne.jp/potappo2/20061107/1162862536
» [.vimrc] “invalid argument….”
https://bbs.archlinux.org/viewtopic.php?id=55671
Vim: listchars
http://www.flickr.com/photos/hail2u/3817627320/
以上のようなサイトを参考にして設定して二行を .vimrc
に書き加えた。順に説明しよう。
set list
set listchars=tab:»-,trail:-,eol:↲,extends:»,precedes:«,nbsp:%
set list
不可視文字を表示しますよ。という設定。どのように表示するかは次の一行で決める。
set listchars=tab:»-,trail:-,eol:↲,extends:»,precedes:«,nbsp:%
tab:»-
- “タブ”の表示を決定する。値は 2 文字で指定し、タブがスペース 8 文字に当たる場合、“
»-------
”などと表示される。
trail:-
- 行末に続くスペースを表す表示。
eol:↲
- 改行記号を表す表示。
extends:»
- ウィンドウの幅が狭くて右に省略された文字がある場合に表示される。
precedes:«
extends
と同じで左に省略された文字がある場合に表示される。
nbsp:%
- 不可視のスペースを表す表示。ただし、この記号の通りに表示されるのは“
”、つまり、ノーブレークスペースに限られており、ほかの不可視スペース
(画像に挙げた ​、、などなど)
には効果がない。
と、ここまではよいのだが、一つだけ抜けてるものがある。そう、全角スペースはこれによっても表示されないのだ。そこは先人の知恵を拝借。
コアテクの路地: vim: 見えない文字を見えるようにする
http://blog.miraclelinux.com/ctd/2006/07/vim__32e1.html
" 全角スペース・行末のスペース・タブの可視化
if has("syntax")
syntax on
" PODバグ対策
syn sync fromstart
function! ActivateInvisibleIndicator()
" 下の行の" "は全角スペース
syntax match InvisibleJISX0208Space " " display containedin=ALL
highlight InvisibleJISX0208Space term=underline ctermbg=Blue guibg=darkgray gui=underline
"syntax match InvisibleTrailedSpace "[ \t]\+$" display containedin=ALL
"highlight InvisibleTrailedSpace term=underline ctermbg=Red guibg=NONE gui=undercurl guisp=darkorange
"syntax match InvisibleTab "\t" display containedin=ALL
"highlight InvisibleTab term=underline ctermbg=white gui=undercurl guisp=darkslategray
endfunction
augroup invisible
autocmd! invisible
autocmd BufNew,BufRead * call ActivateInvisibleIndicator()
augroup END
endif
set list
と意味がかぶる行はコメントにしてある。これを .vimrc
に書き加えれば完成だ。