VimのConceal機能
「【VIM】新機能“CONCEAL”構文属性を使う」でも紹介されているように,Vimのsyntax情報を使って,特定の文字列を別の文字列に置き換えるなど,コードを見やすくするもの...
なのですが,「【Vim】Conceal機能ってぶっちゃけ見にくいと思う」にもあるように,世間の評価はそんなに良くもなく(たぶん..),僕も昔使った時は「ないな..」と感じ,これまではこの機能を無効にしていました.
Conceal機能を見直してみる
とはいえ,式が複雑になってくるとやっぱりソースコードを見るのは辛いです.特に僕の場合は,下付きまたは上付きの非斜体や,ボールド体が多く,例えば
のような,そこまで複雑じゃない式を書くにも
\begin{equation}\bm{F} = \bm{F}^\mathrm{e}\cdot\bm{F}^\mathrm{p}\end{equation}
Second-Piola Kirchhoff stress tensor $\bm{S} =\bm{F}^{-1}\cdot\bm{\tau}\cdot\bm{F}^\mathrm{-T}$\begin{equation}\mathscr{F} (\bm{\tau},\alpha) = \|\mathrm{dev}[\bm{\tau}]\| - \sqrt{\frac{2}{3}}\left[\sigma_Y + K\alpha\right]\le 0
\end{equation}
こんなにソースコードは長くなり,見ただけでは何が書いてあるのか本当に分かりにくい..
この\mathrm
や\bm
などはソースコードを本当に見づらくするので,今回の主な目標はこいつらをConceal機能を使って見やすくすることです.
プラグイン「tex-conceal.vim」を作ってみた
ということで,Vimのプラグインを作ってみました.まず,上のソースコードはConceal機能を使わないとVim上ではこんな感じです.
デフォルトのConceal機能を使うと,
こんな感じになり,少しマシになりました.ただ,やっぱり\mathrm
などが長くて邪魔ですね.マクロを定義して短くする方法もありますが,たくさんあると結局見にくいことには変わりません.
それが,今回作ったプラグインを導入すると,
こうなります!かなりスッキリしましたね!今度はソースコードを見ても何が書いてあるのか随分わかりやすいと思います.
僕の使っているカラースキームでは,\mathrm
の場所はテキストと同じように白色で,\bm
を使っている場所では,ギリシャ文字でなければボールド体になります.ギリシャ文字もボールドにしたいという場合は,luaLaTeXを使って\tau
ではなく,τ
と直に打てばボールド体になります.
使い方
インストール方法
使ってるプラグインマネージャに合わせて,以下のような感じでインストールしてください.
Plugin 'KeitaNakamura/tex-conceal.vim'" for Vundle
or
Plug 'KeitaNakamura/tex-conceal.vim', {'for': 'tex'} " for VimPlug
設定
setconceallevel=2letg:tex_conceal="adgmb"
と設定すればOKです.上記の設定の2行目では,デフォルトの上付き,下付きの設定を無効にしています.これは,例えば
$x^\alpha$$x^{\alpha}$
と書くと,それぞれConceal機能がONの状態では
$x^α$$x\alpha$
という風に見えてしまうためです.1つ目は問題ないですが,{}
を使った方では何故か^
も消えてしまい,x
×\alpha
の掛け算に見えてしまいます.上付き,下付きはこういうような問題が生じやすいので,デフォルトの機能はOFFにして,単純なx^2
など(1~9まで)のみ上付きで表示されるように再定義しています.あと,x^{-1}
は上の写真にもあるように上付き表示されるようになっていますが,今のところマイナスはこれしか定義していません(-9~-1まで定義しようか悩み中です).\mathrm{T}
や\mathrm{-T}
も僕がよく使うので特別に定義しています.これは,テンソルの転置の意味ですが,そうじゃない場合もあるかもしれないので,この部分は選択できるようにしようと思っています.
あと,僕はカーソルのある行だけConceal機能が無効化されるように設定しています(カーソルのある行は生のソースコードが見れます).というか,デフォルトではそういう設定になっているはずです.心配であれば,
setconcealcursor=""
とすれば良いです.
あとがき
今回,自分でConcealの設定をしてみて僕はこの機能が大好きになりました.敬遠してる人や,昔使ってみて合わないなと感じた人もこれを機に是非使ってみて下さい.