.tmux.confの設定

自分の.tmux.confの設定の解説です。
tmuxのバージョンは3.2を使用しています。

## prefixの変更
tmuxは基本的にprefix+キーを打つことで操作を行います。
デフォルトのtmuxのprefixは`Ctrl+b`が割り当てられています。
bだとCtrlとの距離が遠いため、`Ctrl+a`に変更します。
ここは自分の打ちやすいキーを指定するとよいと思います。

```.tmux.conf
# prefixキーをC-aに変更する
set -g prefix C-a

# デフォルトのprefixキーC-bを解除する
unbind C-b
```

## ペイン操作のキーバインド
### ペインの分割
ペインを分割するためのキーバインドを設定します。
デフォルトでは、垂直分割は`prefix+%`、水平分割は`prefix+"`が割り当てられています。

これだとちょっと打ちづらいので、次のキーバインドを設定します。

- 垂直分割 → `prefix+\`
- 水平分割 → `prefix+-`

```.tmux.conf
# prefix+\でペインを垂直分割する
bind \\ split-window -h

# prefix+-でペインを水平分割する
bind - split-window -v
```

### ペインの移動
次のペインへの移動はデフォルトでは`prefix+o`が割り当てられています。

操作しやすくなるように、次のキーバインドを設定します。

- 次のペインへ移動 → `Ctrl+o`
- 左のペインへ移動 → `Ctrl+h`
- 下のペインへ移動 → `Ctrl+j`
- 上のペインへ移動 → `Ctrl+k`
- 右のペインへ移動 → `Ctrl+l`

```.tmux.conf
# ペインの移動
bind -n C-o select-pane -t :.+
bind -n C-h select-pane -L
bind -n C-j select-pane -D
bind -n C-k select-pane -U
bind -n C-l select-pane -R
```

## ペインのサイズの変更
ペインのサイズを変更するキーバインドを設定します。

- ペインを左側に広げる → `prefix+H`
- ペインを下側に広げる → `prefix+J`
- ペインを上側に広げる → `prefix+K`
- ペインを右側に広げる → `prefix+L`
- ペインを最大化する → `Ctrl+z`

```.tmux.conf
# ペインをリサイズする
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5

# ペインを最大化する
bind -n C-z resize-pane -Z
```

## ウィンドウ操作のキーバインド
次のウィンドウへの切り替えはデフォルトで`prefix+n`、前のウィンドウへの切り替えは`prefix+p`に割り当てられています。

打ちやすくなるように、次のキーバインドを設定します。

- 次のウィンドウへ切り替える → `Shift+←(左矢印キー)`
- 前のウィンドウへ切り替える → `Shift+→(右矢印キー)`

```.tmux.conf
# ウィンドウを切り替える
bind -n S-left previous-window
bind -n S-right next-window
```

vimのキーバインドと被らないようにShiftを使いましたが、自分の環境に合わせて使いやすいキーバインドを設定するとよいと思います。

## ステータスラインの見た目の変更
初期の表示はこのようになっています。

![スクリーンショット 2021-05-08 12.25.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145075/aafbde56-0c53-5d7f-4dab-88a2622e7da4.png)


まず、ステータスラインの色を変更します。

```.tmux.conf
# 256色モードを有効にする
set-option -g default-terminal screen-256color
set -g terminal-overrides 'xterm:colors=256'

# ステータスラインの色を変更
setw -g status-style fg=colour255,bg=colour234
```

ステータスラインの背景色と文字色が変更されました。

![スクリーンショット 2021-05-08 12.48.25のコピー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145075/cb25cd3c-05a3-e8ce-fcb6-304335d8436c.jpeg)

colourで指定できる色は次のコマンドを実行すると確認することができます。

```bash
for i in {0..255}; do
    printf "\x1b[38;5;${i}mcolour${i}\x1b[0m\n"
done
```

![スクリーンショット 2021-05-08 15.29.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145075/b07987dc-b572-4f55-68c5-d079e08c5bd8.png)

ステータスラインは次の画像のように、status-left, window-status, status-rightの3つの領域に分けられています。

![スクリーンショット 2021-05-08 12.48.25のコピー2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145075/7e661aed-8681-ea46-a413-4e1b4c3a2d68.jpeg)

個人的にstatus-left, status-rightの表示は不要だったので、非表示にします。

```.tmux.conf
# status-leftを非表示にする
set -g status-left ""

# status-rightを非表示にする
set -g status-right ""
```

![スクリーンショット 2021-05-08 12.48.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145075/fe15d9f1-4e3d-8ec4-2dbd-04505356476d.png)

window-statusの見た目を変更します。

```.tmux.conf
# window-statusを右寄せにする
set -g status-justify right

# windowのインデックスを1から始める
set -g base-index 1

# window-statusの見た目を変更
setw -g window-status-current-format '#[bg=colour2,fg=colour255] #I #W '
setw -g window-status-format '#[fg=colour242] #I #W '
```

`window-status-current-format`で現在表示しているウィンドウの見た目を変更できます。表示する情報を`#I #W`で指定しています。`#I`はインデックス、`#W`はウィンドウ名です。

`window-status-format`で表示していないウィンドウの見た目を変更できます。

![スクリーンショット 2021-05-08 15.35.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145075/8dc921d9-c646-804c-e7ff-47cf8e803fb5.png)

prefixを押したときに、押されていることがわかるようにwindow-status-current-formatを次のように変更します。

```
setw -g window-status-current-format '#[bg=colour2,fg=colour255]#{?client_prefix,#[bg=colour3],} #I #W '
```

こうすることでprefixが押された時、背景色が変更されます。

![スクリーンショット 2021-05-08 15.36.04のコピー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145075/faab5e04-42fe-872b-bdcc-06bc03281fa6.jpeg)


## その他
マウス操作を有効にします。

```.tmux.conf
# マウス操作を有効にする
set-option -g mouse on
```

tmux上で.tmux.confを変更した後、`prefix+r`で設定を再読み込みするキーバインドを設定しています。

```.tmux.conf
# prefix+r で設定のリロード
bind r source-file ~/.tmux.conf \; display "Reloaded!"
```


## 最終的な.tmux.conf

```.tmux.conf
## prefixキーの変更

# prefixキーをC-aに変更する
set -g prefix C-a

# デフォルトのprefixキーC-bを解除する
unbind C-b


## ペインのキーバインド

# prefix+\でペインを垂直分割する
bind \\ split-window -h

# prefix+-でペインを水平分割する
bind - split-window -v

# ペインの移動
bind -n C-o select-pane -t :.+
bind -n C-h select-pane -L
bind -n C-j select-pane -D
bind -n C-k select-pane -U
bind -n C-l select-pane -R

# ペインを最大化
bind -n C-z resize-pane -Z

# ペインをリサイズする
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5


## ウィンドウのキーバインド

# ウィンドウを切り替える
bind -n S-left previous-window
bind -n S-right next-window


## ステータスラインの見た目の変更

# 256色モードを有効にする
set-option -g default-terminal screen-256color
set -g terminal-overrides 'xterm:colors=256'

# ステータスラインの色を変更
setw -g status-style fg=colour255,bg=colour234

# status-leftを非表示にする
set -g status-left ""

# status-rightを非表示にする
set -g status-right ""

# window-statusを右寄せにする
set -g status-justify right

# window-statusの見た目を変更
setw -g window-status-current-format '#[bg=colour2,fg=colour255]#{?client_prefix,#[bg=colour3],} #I #W '
setw -g window-status-format '#[fg=colour242] #I #W '

# windowのインデックスを1から始める
set -g base-index 1


## その他

# マウス操作を有効にする
set-option -g mouse on

# prefix+r で設定のリロード
bind r source-file ~/.tmux.conf \; display "Reloaded!"
```


## リポジトリ
https://github.com/youichiro/tmux-vim