vimのcolorschemeの色をiTermのプロフィールによって変えた
前置き
ターミナルの背景は黒こそ至高,最高にCoolでExcellent!!! と思っていたが,どうしても太陽光が眩しかったり, 色々な事情で黒背景が不便なことがある.
そこで,黒背景のプロフィール(Dark)に加えて, 白背景のプロフィール(Light)も用意した. だがしかし…
さて,ちょっとファイルを編集するか…
ぐわああああああああーー!!!
急激な色の変化は目に優しくない. それにちょっと画像だと判りにくかもだけど, 縁の部分は白で,中が黒みたいな感じになっていて究極的にかっこ悪い.
どうにかして白背景の時と黒背景の時でset backgroundを変えたい.
答え
if !exists("$ITERM_PROFILE") || $ITERM_PROFILE != 'Light' set background=dark endif
手動切り替え
しょうがないから,手動で頑張る
nnoremap ,t :<C-u>if &bg=='dark' \| set bg=light \| else \| set bg=dark \| endif<CR>
ワンタッチで背景を切り替えられて,便利ではあるのだが, 起動直後にびっくりするし,やっぱり面倒である.
プロに相談した
プロに相談したら,環境変数とかでなんかできるんじゃないの,的なアドバイスを頂戴した. しかしながら,当時,プロの御言葉の10を聞いて1すら理解できていなかった.
iTermの設定で,Profile > General > Send text at start
ってやつがあったから,
それかなぁと考えて,
export LIGHT
ってだけ書いて,Vimからどうやってアクセスするんだろうなぁわからんなぁって思って 数ヶ月単位でずっと放置していた.
setなる物を知った
誰だったかが,set
なるコマンドで環境変数を調べたみたいなツイートをしていた.
今まで僕はset
の存在を知らなかったし,その時は何に使うんだろうなぁと流してしまっていたが,
最近になって,めちゃくちゃ便利コマンドじゃんってことに気付いた.
で,試しに叩いてみた
$ set | grep Light Binary file (standard input) matches $ set | grep Light --text ITERM_PROFILE=Light
神っぽい. vimでの環境変数の参照方法もめっちゃ簡単だった.
*exists()* exists({expr}) The result is a Number, which is |TRUE| if {expr} is defined, zero otherwise. For checking for a supported feature use |has()|. For checking if a file exists use |filereadable()|. The {expr} argument is a string, which contains one of these: &option-name Vim option (only checks if it exists, not if it really works) +option-name Vim option that works. $ENVNAME environment variable (could also be done by comparing with an empty string)
こうなった.
if !exists("$ITERM_PROFILE") || $ITERM_PROFILE != 'Light' set background=dark endif
使っていたらちょっと困ったtmux編
tmuxごしに使おうとすると$ITERM_PRORILEが更新されなくて, 悲しい感じになった.
.tmux.confでupdate-environment
しないといけないらしい
最初,
set -ga update-environment 'ITERM_PROFILE'
としていたが,一番最初に起動したsessionのupdateが永遠に残り続けてわけがわからないので,
set -g update-environment 'ITERM_PROFILE'
とした.
使っていたらちょっと困ったcolorscheme編
colorschemeはhybridを使っているのだけれど, lightにするとwarningの行が悲しいくらいに見えづらくなる うーんこれは辛い. まぁ別に個別に色を設定してあげてもいいんだけど, tmuxのstatus barと色が違うのでそもそもかっこわるい
vim-colors-solarizedを入れた
元々白背景として使っていたのがsolarized Lightだったので,vimもそれに併せた. README - Ethan Schoonover
これで快適VimLifeだ