Blank File

LinuxとかPythonとかVimとか、趣味でいじる感じで

端末Vimでも半透明背景にしたい、そんなあなたに "Seiya.vim" を贈ります

※ 2015/01/06 色々ひどかったので大幅に書き直しました。

今日はクリスマス・イブですね *1

皆様も色々追い詰められてVimや端末と向き合いながら過ごされていることと胸中お察し申し上げます。

一部では「仕事から開放されなくてツラい」などの怨嗟の声も上がっていましたが、例えば端末で作業する時は背景を半透明にしてデスクトップのステキな壁紙を眺めながらすれば心安らかに作業できますよね。

(参考画像 *2 )

f:id:h-miyako:20141224232236p:plain

※背景画像はVim Girl Ver 7.4(イラスト)を描いた | IMAGEDRIVEよりお借りしました。

しかし、この状態でVimを起動すると、設定しているcolorschemeによっては以下のように背景の透明度が無視され、悲しみに満ちた事案が発生します。

f:id:h-miyako:20141224232931p:plain

上記画像では拙作の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') とかでいいと思います。

有効にした時はこんな感じです。

f:id:h-miyako:20141225000344p:plain

例えばmolokai では以下のようになります。

f:id:h-miyako:20141225000440p:plain

この記事を書きながら発見したこちらの記事(半透明でも見やすいかもしれないvim color scheme - Qiita)で同じようなことが紹介されていますね。 正直、vimrcに highlight Normal ctermbg=none を書くので十分だと思います。 autocmd VimEnter,ColorScheme * highlight 〜 にしておくと、colorschemeを変更しても設定が維持されてベターだと思いますが。 ちなみに、Normal だけでなく LineNr, SignColumn, VertSplit, NonText なども ctermbg=None にしておくと分割線や行番号背景も透明になっていい感じです。

むしろ seiya.vim はそれをやっているだけです。 メリットは有効無効を切り替えられるくらいだと思います。

f:id:h-miyako:20141225001638p:plain

プラグインを使わずに設定する

以下の設定を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を再設定すれば元に戻ると思います。

以上、なぜか勢いで作ってしまったプラグインの紹介他でした。

*1:投稿時には日付が変わってクリスマス当日になってしまいました。メリー・クリスマス!

*2:端末はYakuakeを使用しています。OSはKubuntu相当の何かです。

*3:Vimさえあれば幸せを感じる一部のvimmerは除きます