[vim]カラースキーマをサクっと変更する

部屋の照明に合わせて、時間帯に合わせて、その時々の気分によってサクっとカラースキーマを変更したい場合があります。で、
:colorscheme murphy
とかやれば変更できるのですが、そもそもカラースキーマの名前なんて覚えてないよ。という場合が多いと思いますし、名前と色が一致しない、みたいなことも多いと思います。そこで vimscript の練習がてらサクっとカラースキーマを変更できるような vimscript を書いてみました。


" --- toggle colorscheme -----------------------------------
" Default colorscheme
colorscheme pablo
 
let g:scheme_list = [
            \        "pablo"    ,
            \        "elflord"  ,
            \        "koehler"  ,
            \        "murphy"   ,
            \        "torte"    ,
            \        "ron"      ,
            \        "blue"     ,
            \        "darkblue" ,
            \        "desert"   ,
            \        "evening"  ,
            \        "slate"    ,
            \        "shine"    ,
            \        "peachpuff",
            \        "default"  ,
            \        "zellner"  ,
            \        "morning"  ,
            \        "delek"    ,
            \]
let g:scheme_chooser = 0
 
function! ToggleColorScheme(direction)
    if(a:direction==1)
      let g:scheme_chooser += 1
    else
      let g:scheme_chooser -= 1
    endif
 
    let list_size = len(g:scheme_list)
    if g:scheme_chooser >= list_size
        let g:scheme_chooser = 0
    elseif g:scheme_chooser < 0
        let g:scheme_chooser = list_size-1
    endif
    execute "colorscheme ".g:scheme_list[g:scheme_chooser]
    echo g:scheme_list[g:scheme_chooser]
endfunction
 
noremap <M-;>
\       :call ToggleColorScheme(1)<CR>
\       :colorscheme<CR>
 
noremap <M-'>
\       :call ToggleColorScheme(0)<CR>
\       :colorscheme<CR>

これで Alt + ; を押すたびにカラースキーマを list の昇順に、 Alt + ‘ を押すたびにカラースキーマをリストの降順にトグルしてスキーマ名を (あれば) 表示してくれるようになります。
当然保存はされないので次回起動時は最初の設定 (上記の例の場合は pablo) に戻ります。

スポンサーリンク

フォローする

スポンサーリンク