Vimの端末モードの色を設定する方法
Vim8.1から導入された端末機能で、色の設定方法を調べたのでメモ。
そもそもVimの端末機能とは
- Vim8.1から導入された機能
- Vimのwindowとしてterminalを開くことができる
terminal機能を使用できるか確認する方法
以下のコマンドでterminal modeが有効かどうか確認できる。
1が返ってくれば有効になっているため、ノーマルモードの時に:terminal
とすれば起動できる。
:echo has('terminal')
調べようと思った背景
普段私はterminal上のVimを使用しており、Colorshemeとしてtender.vimを使用させていただいています。
適用した際のスクリーンショットは上記のGitHubのページを見てもらえればわかると思いますが、黒背景に映える青が非常に気に入っています。ただ、端末機能の背景色には対応していないようで、terminalを起動すると残念な色合いになっていました。そこで、そもそも端末機能の色を変更する方法を調べてみました。
と言っても、Vimのhelpを引けば一発でわかる内容です。
設定方法
ヘルプ(日本語)によると以下の通りです。
新しい端末ウィンドウでデフォルトで使用される16個のANSI カラーは、変数
g:terminal_ansi_colors
を使用して設定することができます。これは、16個の色名または 16進数の色コードのリストでなければなりません。これは、|highlight-guifg|で受け入れられるものと同様です。 GUI カラーを使用しない場合、端末ウィンドウは常に端末基礎の16個の ANSI カラーを使用します。
vimrc内でg:terminal_ansi_colors
を設定すれば良いので、以下のように記載することで設定可能です。各項目はそれぞれ以下の色を表しています。
letg:terminal_ansi_colors=[ \'black', \'red', \'green', \'yellow', \'blue', \'magenta', \'cyan', \'white', \'black(bright)', \'red(bright)', \'green(bright)', \'yellow(bright)', \'blue(bright)', \'magenta(bright)', \'cyan(bright)', \'white(bright)' \]
自分好みの色を設定する方法
さて、Vimの設定方法がわかりましたので、自分の好みの色を設定したいと思います。
先ほど述べましたように私はVimのColorshemeとしてtender.vimを使用していますので、この色に合わせた端末の色を設定しようと思います。
しかし、ここで問題が一点。ただ単に自分の勉強不足なのですが、ANSIカラーと言われてもどのように設定すべきなのかわかりませんでした。
困っていたところ、terminal.sexyというサイトを発見しました。iTerm2などのColorsheme設定ファイルをImportして別のターミナル用の設定ファイルをExportできるようです。残念ながらVimの端末はありませんでしたが、カラーコードさえわかれば設定できるので、適当にXresources形式で出力して無事コードを取得できました。
letg:terminal_ansi_colors=[ \'#666666', \'#f43753', \'#c9d05c', \'#ffc24b', \'#b3deef', \'#d3b987', \'#73cef4', \'#eeeeee', \'#666666', \'#f43753', \'#c9d05c', \'#ffc24b', \'#b3deef', \'#d3b987', \'#73cef4', \'#ffffff' \]
最後に
設定方法を探してネットを徘徊してしまいましたが、素直にhelpを確認すればよかったです。
Vimのhelpはすごくしっかりと記載してあるので、困った時はまずはhelpを確認する癖をつけておいた方が良いと改めて思いました。
また、ANSIカラーについて、結局よくわかっていないので改めて調べておこうと思います。