tsyama記

プログラミングとそのほか

季節を彩るvim

はじめに

めっきり秋らしくなりました。
開発のときにも常に季節感を意識していたいですね。ということでvimプラグインに手を出してみることにしました。vimmerではないのですが。

カラースキームを変える

vimのカスタマイズはホームディレクトリに.vimrcというファイルを作成することにより設定できます。(rcというのはrun commandの略らしいです)。

まずはこいつを使って季節感のあるカラースキームをvimに適用させてみましょう。デフォルトで使用できるカラースキームはこちらから確認できます。例えばblue.vimを適用させたい場合は.vimrcに

colorscheme blue

と入力します。vim使用中に:color blueコマンドで一時的なカラースキーム変更もできるので、ひとつずつ試しながら良さそうなものを選んでみましょう。

カラースキームをインストールする

デフォルトのカラースキームもよいのですが、秋らしさを感じられるようなものがありませんでした。ここはデフォルト以外のカラースキームを探してインストールしましょう。

colorswat.ch/vim

上記サイトでvimのカラースキームを探すことができます。ここから秋らしさを感じるカラースキームを見つけてきました。

farout

秋の紅葉を思わせるカラースキームです。vimにはプラグイン管理ツールがあるので、それを利用してインストールを行いましょう。今回はvim-plugを使用します。

call plug#begin('~/.vim/plugged')
Plug 'fcpg/vim-farout'
call plug#end()

colorscheme farout

これを.vimrcに記述して:PlugInstallコマンドを実行するとプラグインがインストールされ、faroutカラースキームが適用されます。内部的にgitを使用しているのでサーバにgitをインストールしていないと失敗するようです。

月ごとのカラースキームを適用させたい

秋らしいカラースキームを適用させてみましたが、冬になっても秋の装いのままではいけません。ここはひとつ、月ごとにカラースキームが自動で切り替わるようにしてみましょう。

call plug#begin('~/.vim/plugged')
Plug 'yuttie/hydrangea-vim'
Plug 'cocopon/iceberg.vim'
Plug 'lu-ren/SerialExperimentsLain'
Plug 'Donearm/Ubaryd'
Plug 'itchyny/landscape.vim'
Plug 'nanotech/jellybeans.vim'
Plug 'tyrannicaltoucan/vim-quantum'
Plug 'fmoralesc/vim-vitamins'
Plug 'AlessandroYorba/Alduin'
Plug 'fcpg/vim-farout'
Plug 'KKPMW/moonshine-vim'
Plug 'tpope/vim-vividchalk'
Plug 'raphamorim/lucario'
call plug#end()

command! -nargs=1 SetMonthScheme call SetMonthScheme(<f-args>)

function! GetThisMonthScheme()
  let month = GetMonth()
  let schemeNameDict = GetSchemeNameDict()
  return schemeNameDict[month]
endfunction

function! SetMonthScheme(month)
  let schemeNameDict = GetSchemeNameDict()
  exe "colorscheme " . schemeNameDict[a:month]
endfunction

function! GetColorScheme()
  let month = GetMonth()
  let schemeNameDict = GetSchemeNameDict()
  return schemeNameDict[month]
endfunction

function! GetSchemeNameDict()
  let schemeNameDict = {
        \ '01': 'hydrangea',
        \ '02': 'iceberg',
        \ '03': 'SerialExperimentsLain',
        \ '04': 'ubaryd',
        \ '05': 'landscape',
        \ '06': 'jellybeans',
        \ '07': 'quantum',
        \ '08': 'vitamins',
        \ '09': 'moonshine',
        \ '10': 'farout',
        \ '11': 'vividchalk',
        \ '12': 'lucario',
  \ }
  return schemeNameDict
endfunction

function! GetMonth()
  let now = localtime()
  let month = strftime("%m", now)
  return month
endfunction

exe "colorscheme " . GetColorScheme()

.vimrcにこんなスクリプトを書いてみました。現在月をもとにカラースキームが自動で適用され、さらに:SetMonthScheme <%m>コマンドで任意月に設定したカラースキームを呼び出せます。

プラグイン化する

このまま.vimrcに書いているのでは扱いづらいので、プラグインとして管理することにします。

続・初めてのvimプラグイン作成 - 最小限なvimプラグイン - Qiita

この記事を参考にプラグイン化を行いました。

tsyama/seasons-vim

autoloadディレクトリの中にある辞書データ を書き換えれば好きなカラースキームを好きな月に設定することができます。これで皆さんも四季折々のvimを楽しむことができるようになりました。

設定ファイルの切り分けができていなかったり、未インストールのカラースキームを読み込んだ場合のエラー処理など、色々と目をつぶってはいけないところを無視してはいますが、勢いに任せたプラグインとしてはこんなものです。気が向いたら改修しましょうね。