端末Vimでも半透明背景にしたい、そんなあなたに "Seiya.vim" を贈ります
※ 2015/01/06 色々ひどかったので大幅に書き直しました。
今日はクリスマス・イブですね *1 !
皆様も色々追い詰められてVimや端末と向き合いながら過ごされていることと胸中お察し申し上げます。
一部では「仕事から開放されなくてツラい」などの怨嗟の声も上がっていましたが、例えば端末で作業する時は背景を半透明にしてデスクトップのステキな壁紙を眺めながらすれば心安らかに作業できますよね。
(参考画像 *2 )
※背景画像はVim Girl Ver 7.4(イラスト)を描いた | IMAGEDRIVEよりお借りしました。
しかし、この状態でVimを起動すると、設定しているcolorschemeによっては以下のように背景の透明度が無視され、悲しみに満ちた事案が発生します。
上記画像では拙作のcolorscheme slateblue.vim を使っていますが、巷で人気のcolorscheme (molokai, jellybeans, solarized など) でも同様の事案が発生します。 これではVimと向き合っている時は心が安らぎません *3 。 由々しき事態です。
一部の(古い)colorschemeを使えば可能ですが、そんな理由でcolorschemeを選択する人はVimへの愛が足りていると言えるのでしょうか? そんな制限を受けずに、Vimに少しでもステキな服 (colorscheme) を着せてあげたいと思うのが人情だと思います。
そんなあなたに seiya.vim を贈ります
seiya.vim をお好きな方法でインストールしてください。
端末上でVimを起動し、 :SeiyaEnable
すると背景が端末の背景と同じ色・透明度になります。
その状態でcolorschemeを変更しても背景は端末と同じままなので、半透明背景で使いやすい colorscheme を探すことも簡単です。
ちなみに、:SeiyaDisable
すると背景がcolorschemeの設定に戻ります(たぶん)。
Vim起動時に自動的に有効にしたい場合は、vimrcに let g:seiya_auto_enable=1
と書いてください。
一応端末vimでしか意味はありませんが、autocmdが増えるのが気になる方は let g:seiya_auto_enable = !has('gui_running')
とかでいいと思います。
有効にした時はこんな感じです。
例えばmolokai では以下のようになります。
この記事を書きながら発見したこちらの記事(半透明でも見やすいかもしれないvim color scheme - Qiita)で同じようなことが紹介されていますね。
正直、vimrcに highlight Normal ctermbg=none
を書くので十分だと思います。
autocmd VimEnter,ColorScheme * highlight 〜
にしておくと、colorschemeを変更しても設定が維持されてベターだと思いますが。
ちなみに、Normal
だけでなく LineNr
, SignColumn
, VertSplit
, NonText
なども ctermbg=None
にしておくと分割線や行番号背景も透明になっていい感じです。
むしろ seiya.vim はそれをやっているだけです。 メリットは有効無効を切り替えられるくらいだと思います。
プラグインを使わずに設定する
以下の設定をvimrcあたりに書けばいいと思います(未検証)
if !has('gui_running') augroup seiya autocmd! autocmd VimEnter,ColorScheme * highlight Normal ctermbg=none autocmd VimEnter,ColorScheme * highlight LineNr ctermbg=none autocmd VimEnter,ColorScheme * highlight SignColumn ctermbg=none autocmd VimEnter,ColorScheme * highlight VertSplit ctermbg=none autocmd VimEnter,ColorScheme * highlight NonText ctermbg=none augroup END endif
無効にする時はautocmd! seiya
してcolorschemeを再設定すれば元に戻ると思います。
以上、なぜか勢いで作ってしまったプラグインの紹介他でした。