True Color も Italic (Oblique) Font も表示できないなんて 20 世紀までだよねー
と言いたいところですが、以外と時間がかかりました。iTerm2 3.0 & tmux 2.2 以降でこれが可能です。
斜体フォントをターミナルで使う
上記のサイトを参考にしました。
# A xterm-256color based TERMINFO that adds the escape sequences for italic.
xterm-256color-italic|xterm with 256 colors and italic,
sitm=\E[3m, ritm=\E[23m,
use=xterm-256color,
上記のようなファイルを作成しておいた上で、
tic /tmp/xterm-256color-italic.terminfo
はい。これで準備完了です。後は iTerm2 の設定画面にて以下のように設定。
-
Preferences → Profiles → Text
italic text allowed にチェックを入れる。
-
Preferences → Profiles → Terminal → Report Terminal Type
xterm-256color-italic と入力する。
iTerm2 を起動して以下のように入力してみましょう。
$ echo `tput sitm`italic sample ここが斜体になる`tput ritm`
このように、斜体で表示されれば成功です。
tmux でも斜体を使う
set -g default-terminal "xterm-256color-italic"
先ほど作成した xterm-256color-italic を tmux の設定に追加すれば OK。簡単ですね。
更に True Color を使う
今までの terminal はいいとこ 256 色程度の表現力しかなかったのですよね。いい時代になったもんです。
こちらも上記の記事を参考にしました。iTerm2 の方は特に何も設定不要で True Color が有効になっています。後は tmux の方で
set -ga terminal-overrides ",xterm-256color-italic:Tc"
以上のように設定するだけで OK。iTerm2 のテストコードに True Color の例があるのでスクリプトを叩いてみましょう。
この画像の様に、なめらかな色の変化が現れれば OK です。
Vim でも使う
この斜体 & True Color はまだまだ新しい機能なので、利用できるアプリケーションは限られています。我らが Vim ももちろん対応しています……が、True Color については 7.4.1799 以上という、比較的新しいバージョンが必要です。Homebrew とかで新しいバージョンをインストールしておきましょう。
$ brew install vim
今回はみんな大好き Solarized の True Color 版があったので試してみました。
lifepillar/vim-solarized8: Optimized Solarized colorschemes. Best served with true-color terminals!
何らかのプラグインマネージャーを使っても良いですが、単なるカラースキーマですので colors ディレクトリからファイルをコピーしてくるだけでも試せます。
後は .vimrc に以下のように追記しましょう。
" True Color を使えるようになるおまじない
set termguicolors
" 斜体を積極的に使う
let g:solarized_term_italics = 1
" Solarized Light
colorscheme solarized8_light
で、起動してみると……うん。何も変わらないよね。だって今までも本家 Solarized 使ってたしね。
しかし、これの真価はそんなことではないのです。何と、iTerm2 の色設定と関わりなく、Solarized が使えるのです!
……うん……。は? って感じですよね…… いやね、Solarized とかその他、凝った Colorscheme はたいていの場合 terminal アプリ(この場合は iTerm2)の設定をも切り替えた上で利用するのですが、それはつまり、terminal と Vim で Colorscheme を別々に出来ないという痛みを伴うものでした。
今回の True Color 対応でこれが解決されたんです! iTerm2 は Tango Dark で、Vim は Solarized Light みたいな!
わっかんないかなー、このスゴさ。わかんないだろうなー。でも一人くらいは分かってくれるはず……!