Vim の conceal を使って Unicode エスケープシーケンスの表示を見やすくする
この記事は Vim Advent Calendar 2012 91日目の記事になります。
/: : : : : |: : : : : : : : : : : : : : : : : : : :ヽ : : : : : : : |: : : : : : : : : : : : : : : : : :ヽ: : :ヽ : : : : : : : : : {: : : : : : : : ヽ: : : : : : : : : :ヽ: : ヘ /: : : : : : : :{: :ハ: : : : ヽ: : : ヽ: : : : : : :ヽ: : ヘ : ハ . /: : : : : : : : |::,' ': {: : : |: : : : ',ヽ: : ヽ:',: :!: : : }7 ハ : : : : |: : /:/!:{ ',: !: : :',ヽ: : : ', \: :',:ヽ|: : : :}7:} } |: : : : |: : |/ |::| ,!ヽ: :', \: }_,ィ_ヽ}、::| : : : |::: :|ゝ |: : : : {: : | ≧ミ_,{ \{ `¨Vイ:c、ヽヽ|: : |: :!::: :|\ . /: : :!: ヘ: :', 〃r'c、` ゛ {:i:::::ハ |: : |: :|:::: :! 3月に入って /, イ: ト、:ト、{ {:i::i::} 弋_少 |: :,'|: :|::::: | Advent Calendar が 〃ヽ/ |: : ヘ: :',\ 弋少 /i/ハヽ |: :,:: : }:::::|:! 終わると思った? { V |: : ::::\ヽ、/i/ハ ' |: ,::: :,i::/!リ ヘ ヽ、、: ::::::人` __. - ≦} イ:,!:: /|/ |′ 残念!まだ続いています! ゝ、 `ヽ、::l::{:> . ゝ _ ノ イリ!ハ:// ノ、 ヽー ヒ‐-、::::::Vヽ> . _ . イハル′/// // } } r―‐ ヽ }ヽ7 \ `ー _ イ /、 .( .〈 | ヽ ー- __レ }`丶、 //_ イ `}ヽー-- 、 ヽ ヽ )ヽ_ )ー´ / ヘ:::::::::ヽ、_//, -‐――' '-, / ハ ヽ _)、\_ / ヘ::::::::::y':::::}_::::::::::::::::::::/ / |
[まえがき]
Vim の conceal にはマッチした syntax に対して表示する文字を設定する事が出来ます。
これを利用して、
syntax match unicode_escape_a /\\u0061/ conceal cchar=a
このような syntax を設定すれば、
\u0061
a
こんな感じに cchar に設定した文字で表示する事が出来ます。
と、いう事でこれを利用して Unicode エスケープシーケンスの表示を変更するプラグインを簡単につくってみました。
[使い方]
" 表記を変える :HideoutOn " 表記を戻す :HideoutClear " 表示したい文字をユーザ側で設定する " 例)虎視眈々も表示したい let g:hideout_unicode_user_text = "虎眈々" " 重く感じる場合は、デフォルトの漢字を非表示に設定 let g:hideout_kanzi_disable = 1 " 設定した後はキャッシュをリフレッシュする :HideoutRefreshCache
こんな感じで簡単にですがつくってみました。
常用漢字を含めると syntax を2000個以上設定しているんですがわたしの環境だと思ったよりもレスポンスは悪くない感じ。
最低限の機能だけを実装したのでその他欲しい機能があれば教えて下さい。