VimのColorSchemeを時間で変更するプラグインを作った話

初めに

少し前に「明るい背景の方が目が疲れにくい」という話を聞いてから、白背景のカラースキーマを設定してました。ですが、やっぱり夕方とか夜になると黒背景のカラースキーマの方が目に優しい(刺激が少ない)ような気がして……。
カラースキーマを切り替えるプラグインをVim AwesomeとかGoogleで検索してみたけど、複数のカラースキーマを設定しておいてコマンドで切り替える機能を提供してくれるプラグインはあったけど、自動的に切り替えるようなプラグインはなかった。じゃー作ろうかとうことで作りました。

プラグインの紹介

vim-color-scheme-switcher-over-time

一言で機能を説明すると「指定した時間に指定したcolorschemeに変更してくれる」プラグインです。初めてそれっぽいOSSを作ったので、ブランチの保護の設定とかあってるのか不安です。

以下、READMEにも書いているのでそちらをご覧いただけるといいと思いますが、簡単に紹介します。

インストール

私がvim-plugを使っているので、vim-plugを使っている前提で書きます。 .vimrcに以下を追記します。

Plug 'underson666666/color-scheme-switcher-over-time'

保存したらvimを開きなおすかsource ~/.vimrcとかで読み込みなおして、:PlugInstallを実行してください。

使い方

以下のように時間とcolorschemeの組み合わせを定義してください。 night-owlgithubは私の最近のお気に入りのcolorschemです。

let g:color_scheme_switcher#colors = { "0": "night-owl", "08": "github", "17:30": "night-owl", "18:30": "night-owl"}

必須の設定は上記だけですが、オプションでbackgroundも設定できます。keyはcolorschemeのkeyと合わせてください。

let g:color_scheme_switcher#backgruonds = { "0": "dark", "08": "light", "17:30": "light", "18:30": "dark"}

自動起動するために以下を追加できます。

if has('vim_starting')
    call color_scheme_switcher#StartColorSchemeSwitcher()
endif

デフォルトで60秒に1回、colorschemeを変更する処理が動きますが、これも変更できます。 一応timerを開始/終了するコマンドも用意しています。 詳しくはREADMEをご覧ください。ここに書いた以上の機能はないです。

終わりに

(公開するのは)初めてVimのプラグインを作りました。OSSと呼べるようなものを初めて作りました。ライセンスもとりあえずMITにしておこうかなぐらいの感覚で設定しています。ライセンスがないのが一番困るっていう発言をどこかで見た気がしたので…。

vimscriptってtimerで定期処理とかできるんですね。なんというかもっと低レベルなことしかできないもんだと思ってました(失礼)。 vimscriptのことを調べている間にあえて文句を言うとすると、Google先生が「JavaScriptのことだろ?」って候補を出してくることが余計なお世話ぐらいですね。

「プラグインを作ろう」と思ったときに特にこの記事を参考にさせていただいたんですが、plugin配下から呼ぶことができる関数をautoload配下に定義する時、ファイル名#関数名()という命名規則に従う必要があります。との記載を読み飛ばしておりハマってしまいました。。ちゃんと文章を読みましょうというだけのことですが…。

以前は現在日時をカーソル位置に挿入するだけのプラグインを作ったことがあるんですが、まぁとりあえず作ってみたっていうだけで自分でも全然使わずに公開もしませんでした。一時的にGitHubに登録してましたが、この間消しました。(もし誰か使ってたらごめんなさい)
今回は自分的にまぁまぁ有用なプラグインを作れたので満足してます。 他の方がどんな風に書いているのかを見てみようという気にもなりました。

なんだか最近開発に対するモチベーションがいまいち上がらないんですが、自分の開発環境を整えるためや楽をする、効率化するための開発や調査はモチベーションの1つだなと今回気付くことができました。 これを気に少しでもモチベーションが上がればいいなぁ。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする