Vim 7.3 の新機能“conceal”の使い道がよくわからなかったのだが、こんな使用例があるようだ。
js-mask – More concise JavaScript using Vim’s “conceal” feature : vim online
http://www.vim.org/scripts/script.php?script_id=3324
Javascript では“function(){}
”をひたすら重ねていくのでコードが冗長になりがち。それを見た目なりときれいにしてしまおうというのがこのプラグイン。
例えばこんなコードが、
// 1~5の合計「15」と表示する (function(){ alert( (function( ary ){ function sum( a ) { var s = 0; a.forEach( function( i ){ s += i } ); return s; } return sum( ary ); })( [ 1, 2, 3, 4, 5 ] ); ); })();
こんな風に表示される。「function
」という文字列が「?」一文字で表されるので、読みやすい?気もする。表示されるだけで、コード自体がいじられるわけではないのがポイント。
プラグインの中身自体は非常に簡単だ1。
syntax clear javaScriptFunction syntax match javaScriptFunction /\<function\>/ nextgroup=javaScriptFuncName skipwhite conceal cchar=𝔽 syntax match javaScriptFunctionNoParams /function()/ conceal cchar=𝔽 hi link javaScriptFunctionNoParams javaScriptFunction hi! link Conceal javaScriptFunction set conceallevel=2
“conceal”したい部分を正規表現で指定し、代替文字列を cchar
オプションで指定しているだけである。
さらにこの機能をアグレッシブに使用しているのが TeX のシンタックス定義ファイル。
Using the conceal Vim feature with LaTeX « Björn Winckler’s Blog
http://b4winckler.wordpress.com/2010/08/07/using-the-conceal-vim-feature-with-latex/
syntax/tex.vim and conceal support – vim_dev | Google グループ
http://groups.google.com/group/vim_dev/browse_thread/thread/f1a38e084967c750?pli=1
let g:tex_conceal='adsmg' set conceallevel=2
この 2 行を .vimrc
に書き加えるだけで、ソースの見た目が全く変わってしまう。
before | after |
---|---|
カラースキームとフォントの選択を慎重に行わないと、読みにくくなるだけな気もする。例によって、多用は禁物だ。
-
プラグインでは
cchar
として「𝑓」(文字コード0x1D453
)が指定してあるが、うちの環境ではうまく表示できなかった。そのため代わりに「𝔽」(文字コード0x1D53D
)を使ってある。 ↩