Edited at

Vim の :terminal の色を設定する方法

この記事は Vim Advent Calendar 2018 その2 7日目の記事です。


Vim の :terminal

Vim に :terminal 機能が入り、Vim 上からシェルを実行したり、fzf.vim のようにプラグインから :terminal を活用出来るようになりました。

この :terminal ですが、実は Vim 8.0.1685 で色設定が出来るようになりました。

patch 8.0.1685: can't set ANSI colors of a terminal window · vim/vim@f59c6e8


:terminal の色設定の方法

patch 8.0.1685 では以下の関数とオプションが導入されており、GUI の場合か termguicolors が有効な場合、 :terminal を設定した色で表示することが出来ます。


  • term_getansicolors({buf})

  • term_setansicolors({buf}, {colors})

  • g:terminal_ansi_colors

色設定は g:terminal_ansi_colors に16色の ANSI カラーを設定します。

(コメント部分の色説明は、iTerm 2 を参考にしています)

let g:terminal_ansi_colors = [

\ '#073642', " black
\ '#dc322f', " Red
\ '#859900', " green
\ '#b58900', " yellow
\ '#268bd2', " blue
\ '#d33682', " magenta
\ '#2aa198', " cyan
\ '#eee8d5', " white
\ '#002b36', " black (bright)
\ '#cb4b16', " red (bright)
\ '#586e75', " green (bright)
\ '#657b83', " yellow (bright)
\ '#839496', " blue (bright)
\ '#6c71c4', " magenta (bright)
\ '#93a1a1', " cyan (bright)
\ '#fdf6e3', " white (bright)
\ ]


デモ

色表示には http://yonchu.hatenablog.com/entry/2012/10/20/044603 に記載の color16.sh を利用させていただきました。