tmux + fish + neovim + windows terminal環境でいい感じの見た目にする

素のwindows terminalで素のwslを起動すると以下のような見た目になると思います
![pk000015.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65726/df241a14-ae11-5dce-1710-dd69afc9ede1.png)
この記事ではこれを以下みたいな感じにします
![pk000016.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65726/5f92473f-d781-6aa9-db21-8e969e5a2e48.png)
かっこいい…  

# tmuxのインストール
https://github.com/tmux/tmux
パッケージマネージャに依るので割愛

# fishのインストール
https://fishshell.com/
パッケージマネージャによるので割愛

# neovimのインストール
https://neovim.io/
パッケージマネージャに依るので以下略
別にneoじゃないvimでもいいと思いますけど確認してないです

素のneovim on tmuxはこんな感じ
![pakka000224.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65726/b40ca6c9-fe3a-2b70-dbe5-d1b2ef02edc6.png)

# fishのプラグインマネージャ（fisher）のインストール
https://github.com/jorgebucaran/fisher
を参考にインストールします

インストールガイドのワンライナー
`curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher`
はfishじゃないと動作しない（bashとかみたいな別のシェルだと動かない）のに注意

# bobthefishのインストール
https://github.com/oh-my-fish/theme-bobthefish
`fisher install oh-my-fish/theme-bobthefish`
この時点でこんな感じ
![pakka000225.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65726/3d6bd26d-3349-72eb-8e7e-0469a3a4df8d.png)
プロンプトが真っ暗ですね
`set -g theme_color_scheme [theme]` でテーマを適用できます

使用できるテーマはこちらから
https://github.com/oh-my-fish/theme-bobthefish

試しにbase16-lightを適用してみる
`set -g theme_color_scheme base16-light`
![pakka000226.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65726/f0e4649d-f5b8-43b3-9884-4e27d96294c1.png)
おや、期待していたpowerlineではないですね
これはターミナル（windows terminal）のフォントがpowerlineに対応しているものではないからです

# ナードフォントのインストール
powerlineを正常に表示させるにはナードフォントが必要です
なんでもいいですが自分は[白源フォント](https://github.com/yuru7/HackGen)が気に入っています
chocolateyユーザは `cinst font-hackgen` で入ります

# windows terminalのフォント設定
settings.jsonを開き適用したいプロファイルに対して以下のように追記

```settings.json
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"name": "Windows PowerShell",
"commandline": "powershell.exe",
"hidden": false,
"fontFace": "HackGenNerd", // フォントを指定
```

この時点でこんな感じに
![pakka000227.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65726/64da2b0f-2f35-0717-3c99-828bccdfe5d0.png)
よくなってきた

テーマの設定は以下に記述しておきます（fishにおけるbashrcみたいなやつ）
~/.config/fish/config.fish

次にtmuxとvimのステータスバーをかっこよくしていきます

# vimのプラグインマネージャ（vim-plug）のインストール
vimのプラグインマネージャを入れます
別に何でもいいですけど自分は[vim-plug](https://github.com/junegunn/vim-plug)がシンプルで気に入ってます
他のプラグインマネージャ使用する人は適宜読み替えてください

# init.vim及び.tmux.confの作成とカラースキームの指定

```init.vim
all plug#begin('~/.config/nvim/autoload')
Plug 'vim-airline/vim-airline'
Plug 'edkolev/tmuxline.vim'
call plug#end()
```

`:PlugInstall`  

こんな感じ
![pakka000229.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65726/55113af4-cbc2-b62c-c9d7-56de0dfe8cc0.png)
自分は[iceberg](https://github.com/cocopon/iceberg.vim)が気に入っているのでとりあえずこれを入れてみます

icebergのようにvimでtruecolorを使用する場合、init.vim と ~/.tmux.conf の両方でオプションの指定が必要です
解説は[こちらのコメント欄から](https://qiita.com/yami_beta/items/ef535d3458addd2e8fbb)、自分もよく理解してないです

```init.vim
call plug#begin('~/.config/nvim/autoload')
Plug 'vim-airline/vim-airline'
Plug 'edkolev/tmuxline.vim'
Plug 'cocopon/iceberg.vim'
call plug#end()

set termguicolors
colorscheme iceberg
let g:airline_theme = 'iceberg'
let g:airline_powerline_fonts = 1
```

```.tmux.conf
set-option -g defaut-terminal "screen-256color"
set-option -sa terminal-overrides ',xterm-256color:RGB'
```

この状態でtmuxを再起動→fishログイン→nvim起動すると以下みたいな感じになるはず
![pk000011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65726/f7612bfc-6563-51ec-1b8e-95135fdf2f6e.png)
ただしこのままだと毎回nvimを一旦起動しないとairlineが適用されないという謎の状態になってるはず
設定ファイルとして書き出してtmux起動時にそれを読み込むようにするとログイン時点で適用されるようになります

nvimを起動し、
`:TmuxlineSnapshot ~/.tmuxline.conf`
~/.tmux.confに以下追記
`if-shell "test -f ~/.tmuxline.conf" "source ~/.tmuxline.conf"`
これでtmux上でfish起動するとairline適用されるようになってるはず

# ついでにシェルの背景も指定する

```~/.tmux.conf
# ~/.tmux.conf
set -g window-active-style "bg=#161821" # テーマのカラーコードは各自調べておく
set -g window-style "bg=#262831"
```

![pk000014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65726/030258f4-3075-9665-197c-20be4c659e2a.png)
かっこいい…

# windows terminalの背景を指定する
シェルを白背景にしてみたら枠が目立つようになりました
![pk000018.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65726/dd689e81-b63a-ce07-3a93-b73b452df2d9.png)
この黒枠はwindows terminalの背景色です
windows terminalの背景色を変更するにはsettings.jsonを編集すればおｋ

```settings.json
{
	// 略
	"name": "Windows PowerShell",
	"colorScheme": "iceberg-dark",
	// "colorScheme": "iceberg-light",
},
// 略
    "schemes": [
		  {
		  "name": "iceberg-dark",
		  // 略
		  "background": "#161821",
		  "foreground": "#c6c8d1",
		  // 略
		  },
	],
```

![pk000019.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65726/1c0bc3f1-a3d1-9ddf-fc18-9095613d17ce.png)

ちなみにシェルのプロンプトにもvim-airlineを利用する[promptline](https://github.com/edkolev/promptline.vim)というものがあった（tmuxlineと同作者）けどリポジトリの状態表示なんかでbobthefishが一枚上手だったので今回はスルー
bobthefishのテーマ自分で弄れたらよかったけどよくわからん

おわり