vimだとこの問題は簡単に対応できそうだったので、 少し問題を簡単にして、起動時刻で配色を変えられるスクリプトを書いてみました。 配色の設定を変える事自体も簡単になっています。 まず以下のコードを ~/bin/cvim などの実行しやすい環境に配置します。
#!/usr/bin/env python
import os, sys, datetime, argparse, subprocess, random
# config
light_500 = 'solarized,gruvbox,seoul256,hybrid,PaperColor'.split(',')
light_other = 'github,schellar,newspaper,kalisi,pencil,tender'.split(',')
dark_500 = 'solarized,gruvbox,molokai,onedark,jellybeans,hybrid,badwolf,seoul256,monokai,zenburn,iceberg,PaperColor,nord'.split(',')
dark_other = 'frictionless,wasabi256,tender,apprentice,alduin,kalisi,antares,nefertiti,moonshine'.split(',')
light = light_500 + light_other
dark = dark_500 + dark_other
filepath = os.environ['HOME'] + '/.vimrc.colorscheme'
parser = argparse.ArgumentParser(description='color changer for vim')
parser.add_argument('-d', '--dark', action='store_true', help='use dark theme')
parser.add_argument('-l', '--light', action='store_true', help='use light theme')
(args, vim_args) = parser.parse_known_args()
background = colorscheme = None
hour = datetime.datetime.now().hour
if args.light == True:
background = 'light'
colorscheme = random.choice(light)
elif args.dark == True:
background = 'dark'
colorscheme = random.choice(dark)
elif hour < 7 or 17 < hour:
background = 'dark'
colorscheme = random.choice(dark)
else:
background = 'light'
colorscheme = random.choice(light)
with open(filepath, 'w') as f:
f.write('set background=%s\n' % background)
f.write('colorscheme %s' % colorscheme)
vim_args = ' '.join(vim_args)
subprocess.call('nvim %s' % vim_args, shell=True)
上記のコードではGithubで500以上のスターを貰っているカラースキームと、ここで紹介されているものを片っ端から登録してみました。今回はvimでこれらのカラースキームを事前に読み込んでおく事を想定しています。 この設定は面倒だと思うので、Shougo/dein.vimを使った設定例を表示しておくと以下になります。
"--- 500 fav
call dein#add('altercation/vim-colors-solarized')
call dein#add('morhetz/gruvbox')
call dein#add('tomasr/molokai')
call dein#add('joshdick/onedark.vim')
call dein#add('nanotech/jellybeans.vim')
call dein#add('w0ng/vim-hybrid')
call dein#add('sjl/badwolf')
call dein#add('junegunn/seoul256.vim')
call dein#add('sickill/vim-monokai')
call dein#add('jnurmine/Zenburn')
call dein#add('cocopon/iceberg.vim')
call dein#add('NLKNguyen/papercolor-theme')
call dein#add('arcticicestudio/nord-vim')
"--- dark & light
call dein#add('freeo/vim-kalisi')
"--- dark
call dein#add('0xcharly/vim-frictionless')
call dein#add('thomd/vim-wasabi-colorscheme')
call dein#add('AlessandroYorba/Alduin')
call dein#add('romainl/Apprentice')
call dein#add('jacoborus/tender.vim')
call dein#add('Haron-Prime/Antares')
call dein#add('jeetsukumaran/vim-nefertiti')
call dein#add('KKPMW/moonshine-vim')
"--- light
call dein#add('endel/vim-github-colorscheme')
call dein#add('igungor/schellar')
call dein#add('vim-scripts/newspaper.vim')
call dein#add('reedes/vim-colors-pencil')
さらに ~/.vimrc や ~/.config/nvim/init.vim で背景色とカラースキームを指定をしている箇所を以下のように書き換え、カラースキームの設定を別のファイルから読み込むようにします。
" 時刻で表示を変える
execute ':source ' . '~/.vimrc.colorscheme'
あとは以下のように普段vimを使う時と同様に実行すればカラフルなvimの出来上がり。 -l, -dオプションを付けると黒配色と白配色を明示したりもできる。
cvim foobar.txt
cvim -d dark.feel
今のところ夜中に実行すると黒配色、日中に実行すると白配色で表示します。 表示はカラースキームのリストの中からランダムに選びます。 照明や屋内外の判定を頑張れば面白いかもですが、そこまでのやる気はなかった。 起動する度に表示が変わり新鮮な気持ちでvimれるようになったので、これだけでも満足してます。
0 件のコメント:
コメントを投稿