【🔰初心者向け】tmuxのススメ② ~ 自分なりの設定をしよう + 練習問題 ~

## はじめに
こんにちは！ITスクールRareTECHにてCS（Customer Support）を担当している池村です。今回の記事は前回に引き続きtmuxについてです。前回の記事を読んでいない方は、まずそちらからご確認ください。

https://qiita.com/ikemura-ren/items/a384940ea03f3f26e221

今回の記事では、tmuxの設定ファイルをいじってプレフィックスを変更したり、自分なりの設定をすることで使用感を変更してみたいと思います。

![2d520137-6673-481c-b9b7-02a063662ee1_720.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/7cddae7a-3b8b-b0c9-7c76-397828346c6e.png)


## .tmux.confについて
tmuxの設定ファイルはホームディレクトリに作るのがおそらく一般的です。勝手に読み込んでくれるので。tmuxをインストールするだけではこの.tmux.confファイルは作られません。なのでご自身で作る必要があります。

```Bash:作り方
touch ~/.tmux.conf
```

そこから中身を開いて設定を書いていきます。Vimでもいいですし、VSCodeでも構いません。とにかくファイルを開いて編集していきます。

### プレフィックスを変更したい場合
まずはデフォルトの`control + b`を変更したい場合の書き方です。
.tmux.confに以下のように記述する。
```Bash:プレフィックスを変更
# prefixキーをC-sに変更
set -g prefix C-s

# C-bのキーバインドを解除
unbind C-b
```
これは私がこの設定にしているからですが、正直どのキーバインドでも構いません。強いていうなら`control + a`や`e`、`d`や`h`は避けた方が良いでしょう。行頭や行末への移動、1文字消すなどのキーバインドと競合します。

:::note info
ここは完全に好みですので、ご自由に設定してみてください。
:::

### 縦分割と横分割（ペイン）
こちらは大半の人がやっている（と思っている）設定方法ですが、control + b -> `"`や`%`で縦横分割はあまり直感的じゃないと思っています。これをもっとわかりやすくするなら、`|`と`-`を使っていきたいですね。

```Bash:縦横分割のオススメ設定
# | でペインを縦分割する
bind | split-window -h

# - でペインを縦分割する
bind - split-window -v
```

### マウスやトラックパッドでのペイン移動について
こちらは好みにもよるのですが、設定をいじることでペインをクリック後にそのペインへ移動をすることができます。

```Bash:カーソル移動をオンにする
# マウスでの移動を可能にする
set -g mouse on
```
### クリップボードにコピーする
クリップボードとは、Command + CやCtrl + Cでコピーしたテキストを残しておける機能です。基本的にクリップボードを使っている人が多い前提で話を進めます。

このクリップボードにtmux上でコピーした内容を保存しておくには、以下の記述を.tmux.confに書いてみてください。

```Bash:クリップボード（Mac専用の書き方）
bind -T copy-mode-vi MouseDragEnd1Pane send -X copy-pipe-and-cancel "pbcopy"
```

こちらの記述を書いておくと、マウス等でドラッグした部分をコピーしてくれます。

:::note warn
tmuxにはコピーモードというものがあり、そちらもVimに慣れた人ならおすすめできるのですが、今回はシェルをいじり始めてまだ日が浅い人向けなので、こちらの設定も悪くないと思っています。
:::

### ステータスバー周りの設定
#### 色を変えてみる
これもかなり好みですが、一応設定方法を載せておきます。
```Bash:ステータスバーの色
# ステータスバーの背景色を設定
set -g status-bg "colour22"

# ステータスバーの文字色を設定
set -g status-fg "colour250"
```

fgが文字色の方で、bgが背景色ですね。

:::note info
これは私の設定ですので、お好みで色を変えてみてください。私は緑色が好きなので緑色にしています。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/9c18c24b-b1aa-966b-afcc-3935d37be93c.png)

#### ウィンドウを中央に寄せる
```Bash:ステータスバーの情報位置を変える
# ステータスバーのウィンドウリストを中央寄せにする
set-option -g status-justify centre

# ステータスバーを画面上部に配置
set-option -g status-position top
```

:::note info
本当に好みです。デフォルトだとステータスバーは下にきますが、私は上にしているというだけです。
:::

## 最終的にできた設定ファイル
今までの設定をまとめたものが以下になります。
```Bash:
# prefixキーをC-sに変更
set -g prefix C-s

# C-bのキーバインドを解除
unbind C-b

# | でペインを縦分割する
bind | split-window -h

# - でペインを縦分割する
bind - split-window -v

# マウスでの移動を可能にする
set -g mouse on

# 選択部分がクリップボードに保存される
bind -T copy-mode-vi MouseDragEnd1Pane send -X copy-pipe-and-cancel "pbcopy"

# ステータスバーのウィンドウリストを中央寄せにする
set-option -g status-justify centre

# ステータスバーを画面上部に配置
set-option -g status-position top

# ステータスバーのウィンドウリストを中央寄せにする
set-option -g status-justify centre

# ステータスバーを画面上部に配置
set-option -g status-position top

```

Vimに慣れている人向けには以下の設定も追記することをおすすめします。
```Bash:Vimのキーバインドに慣れている方向け
# ペインをVimキーバインドで移動できるようにする
bind -r k select-pane -U 
bind -r j select-pane -D 
bind -r h select-pane -L 
bind -r l select-pane -R
```

### 設定ファイルは書き込んだら反映する必要がある
.zshrcなどもそうですが、今回いじった.tmux.confもファイルに書き込んだらシェル全体に読み込ませる必要があります。

```Bash:.tmux.confの反映方法
tmux source-file ~/.tmux.conf
```
tmux上で反映させるには上記で大丈夫です。


## tmuxの操作に慣れるための練習問題
ここからは初心者の方がtmuxの操作に慣れるための練習問題を残しておきます。
毎日15分でもやっていれば、2~3週間くらいで大体操作をマスターするでしょう。

### ハンズオン練習問題
```Bash:練習問題一覧
(1) 現在tmuxを開いている状態なら一度出てください
(2) tmuxを開いてください
(3) 現在のセッションの名前を変更してください（名前はなんでも良い）※これは調べてみよう
(4) 現在のセッションをデタッチしてください
(5) 新規のセッションを名前をつけて起動してください（名前はなんでも良い）
(6) 新規でウィンドウを開いてください
(7) 元のウィンドウに戻ってください
(8) そのウィンドウを消してください
(9) ペインを縦分割で開いてください
(10) さらに横分割でペインを開いてください
(11) ペインを最大化してください
(12) 最大化したペインを元のサイズに戻してください
(13) 現在のペインを削除してください
(14) ペイン間の移動をしてください
(15) ウィンドウに名前をつけてください（名前はなんでも良い）
(16) セッションを終了してください
```

### 回答
<details><summary>回答（最初は見ずに頑張ろう！）</summary>


(1) 現在tmuxを開いている状態なら一度出てください
```Bash:(1)の回答
exit
```
(2) tmuxを開いてください
```Bash:(2)の回答
tmux
```
(3) 現在のセッションの名前を変更してください（名前はなんでも良い）
```Bash:(3)の回答
tmux rename-session new_name
```
(4) 現在のセッションをデタッチしてください
```Bash:(4)の回答
プレフィックス + d
```
(5) 新規のセッションを名前をつけて起動してください（名前はなんでも良い）
```Bash:(5)の回答
tmux new -s session_name
```
(6) 新規でウィンドウを開いてください
```Bash:(6)の回答
プレフィックス + c
```
(7) 元のウィンドウに戻ってください
```Bash:(7)の回答
プレフィックス + 0
もしくは
プレフィックス + w
```
(8) そのウィンドウを消してください
```Bash:(8)の回答
exit
```
(9) ペインを縦分割で開いてください
```Bash:書き方
プレフィックス + %
```
(10) さらに横分割でペインを開いてください
```Bash:(10)の回答
プレフィックス + "
```
(11) ペインを最大化してください
```Bash:(11)の回答
プレフィックス + z
```
(12) 最大化したペインを元のサイズに戻してください
```Bash:(12)の回答
プレフィックス + z
```
(13) 現在のペインを削除してください
```Bash:(13)の回答
プレフィックス + x
```
(14) ペイン間の移動をしてください
```Bash:(14)の回答
プレフィックス + 矢印キー
もしくは
プレフィックス + n or p
```
(15) ウィンドウに名前をつけてください（名前はなんでも良い）
```Bash:(15)の回答
プレフィックス + ,
```
(16) セッションを終了してください
```Bash:(16)の回答
exit
```

</details>


:::note warn
基本的には使って慣れろ、というのが最適解ですが、こういったものをパッと覚えるなら反復練習あるのみです！応用方法やその他の設定などは困った時にググっていきましょう👍
:::


## おわりに
今回はtmuxの設定ファイル関係、練習問題の記事を作成しました。
正直これ以外もたくさんあるのですが、初心者はまずここからという記事を書きたかったので、この形で一旦終了とさせていただきます。

まとめ記事に戻るにはこちら👇

https://qiita.com/ikemura-ren/items/3e7b6ec1b0cd9b3928d6

## 余談
tmuxの機能性と美しさには本当に惚れ惚れする🤤