tmux on iTerm2 で斜体 & True Color を使う

_True Color も Italic (Oblique) Font も表示できないなんて 20 世紀までだよねー_

と言いたいところですが、以外と時間がかかりました。iTerm2 3.0 & tmux 2.2 以降でこれが可能です。

# 斜体フォントをターミナルで使う

> [Italic fonts in iTerm2, tmux, and vim - Alex Pearce][italic]

[italic]: https://alexpearce.me/2014/05/italics-in-iterm2-vim-tmux/

上記のサイトを参考にしました。

```terminfo:/tmp/xterm-256color-italic.terminfo
# 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,
```

上記のようなファイルを作成しておいた上で、

```sh
tic /tmp/xterm-256color-italic.terminfo
```

はい。これで準備完了です。後は iTerm2 の設定画面にて以下のように設定。

* Preferences → Profiles → Text
  **italic text allowed** にチェックを入れる。
  <img width="1030" alt="スクリーンショット_2016-08-21_19_55_06.png" src="https://qiita-image-store.s3.amazonaws.com/0/8880/e578f693-8bf8-7dd6-550f-6ce7d5c1566a.png">

* Preferences → Profiles → Terminal → Report Terminal Type
  **xterm-256color-italic** と入力する。
  <img width="1049" alt="スクリーンショット_2016-08-21_19_52_11.png" src="https://qiita-image-store.s3.amazonaws.com/0/8880/f36dae2a-b6eb-5a9a-5c2e-cca554fbf267.png">

iTerm2 を起動して以下のように入力してみましょう。

```sh
$ echo `tput sitm`italic sample ここが斜体になる`tput ritm`
```

<img width="634" alt="スクリーンショット 2016-08-21 20.01.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/8880/64707a84-fcd2-2128-5099-7f889b36d89e.png">

このように、斜体で表示されれば成功です。

## tmux でも斜体を使う

```tmux:.tmux.conf
set -g default-terminal "xterm-256color-italic"
```

先ほど作成した **xterm-256color-italic** を tmux の設定に追加すれば OK。簡単ですね。

# 更に True Color を使う

今までの terminal はいいとこ 256 色程度の表現力しかなかったのですよね。いい時代になったもんです。

> [Using True Color in Vim with Tmux - Deductive Labs][truecolor]

[truecolor]: https://deductivelabs.com/en/2016/03/using-true-color-vim-tmux/

こちらも上記の記事を参考にしました。iTerm2 の方は特に何も設定不要で True Color が有効になっています。後は tmux の方で

```tmux:.tmux.conf
set -ga terminal-overrides ",xterm-256color-italic:Tc"
```

以上のように設定するだけで OK。[iTerm2 のテストコード][test]に True Color の例があるのでスクリプトを叩いてみましょう。

[test]: https://github.com/gnachman/iTerm2/blob/master/tests/24-bit-color.sh

<img width="1146" alt="スクリーンショット 2016-08-21 20.10.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/8880/b9cab242-ed2e-25f6-981f-8b6702d646d0.png">

この画像の様に、なめらかな色の変化が現れれば OK です。

# Vim でも使う

この斜体 & True Color はまだまだ新しい機能なので、利用できるアプリケーションは限られています。我らが Vim ももちろん対応しています……が、True Color については 7.4.1799 以上という、比較的新しいバージョンが必要です。Homebrew とかで新しいバージョンをインストールしておきましょう。

```sh
$ brew install vim
```

今回はみんな大好き [Solarized][] の True Color 版があったので試してみました。

[Solarized]: http://ethanschoonover.com/solarized

> [lifepillar/vim-solarized8: Optimized Solarized colorschemes. Best served with true-color terminals!][solarized8]

[solarized8]: https://github.com/lifepillar/vim-solarized8

何らかのプラグインマネージャーを使っても良いですが、単なるカラースキーマですので [colors ディレクトリ][colors]からファイルをコピーしてくるだけでも試せます。

[colors]: https://github.com/lifepillar/vim-solarized8/tree/master/colors

後は .vimrc に以下のように追記しましょう。

```vim:.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** みたいな！

![solarized-on-tango.gif](https://qiita-image-store.s3.amazonaws.com/0/8880/fc0a7ab1-c832-ddbe-0ff0-e139d6accf9a.gif)

わっかんないかなー、このスゴさ。わかんないだろうなー。でも一人くらいは分かってくれるはず……！