【🔰初心者向け】tmuxのススメ① ~ まずは触ってみよう ~

## はじめに
こんにちは！ITスクールRareTECHにてCS（Customer Support）を担当している池村です。今回の記事はシェルを扱う人なら入れておいてほしいtmuxというツールについてです。
tmuxは簡単に行ってしまうと、**ターミナルの画面を分割してくれる便利なツール**です。

![9da4449a-5633-4922-923a-81f83e3863b5_720.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/3f46d13c-ac5d-b14b-07ea-7656b23cf5b1.png)

:::note warn
基本的にはMacとLinux向けの記事ですが、Windowsの方はWSLなどを入れてご利用ください。ある程度のLinuxコマンドに慣れた人向けです。
:::


## tmuxの概要
tmuxの正式名称はTerminal Multiplexer（ターミナルマルチプレクサ）です。
Linux系列のターミナル画面を、セッション、ウィンドウ、ペインという概念を使って切り分けて扱うことができます。

:::note warn
ただこのtmux、使いこなすのに若干の時間がかかります。
ですが、使いこなすとシェルの操作感がガラリと変わります。
:::

ターミナル->セッション->ウィンドウ->ペインの順で切り分けられるものです。

※tmux参考画像
![step___qiita____720.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/36bedda4-3cf1-3c6a-139f-94fe18d0a395.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/662bb310-0a73-3c21-9fce-db94af6cb9bb.png)



## インストールと起動について
Macの場合
```Bash:インストール方法
brew install tmux
```
※Homebrewが入っている前提です。入っていない方は以下のリンクからインストールお願いします。

https://brew.sh/ja/

インストールが終わったらバージョンを確認しましょう。
```Bash:バージョン確認
tmux -V

# 出力結果（例）
tmux 3.5a
```

tmuxを起動してみよう。
```Bash:起動方法
tmux
```

上記をターミナル上で叩くと、tmuxが起動して新しいシェル画面が出てくるはずです。
tmuxを閉じる
```Bash:tmuxから出る
exit
```

:::note info
起動と出る方法は全然難しくないですね。
:::


## プレフィックスについて
tmuxにはプレフィックスという概念があります。tmuxを操作するときに、操作しますよ〜というのをシェルに伝えるためのコマンドのようなものです。

tmuxはプレフィックス + キーバインドで色々な操作をします。


tmuxを入れた初期は**control + b**がプレフィックスになっています。

:::note warn
注意点として、プレフィックスをキーボードで打った後、一度キーボードから手を離してから次のコマンドを打ちます。少し慣れが必要です。
**controlを押しながらbを押す -> 手を離す -> 次のコマンドを打つ**
という流れです。
:::

#### 画面を分割をしてみよう
```Bash:縦分割
# controlを押しながらbを押す -> 手を離す -> "を押す
control + b -> "
```

画面が縦分割できていたら成功です。
次は横分割をしてみましょう。

```Bash:横分割
# controlを押しながらbを押す -> 手を離す -> %を押す
control + b -> %
```

こんな画面になっていたら成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/d5153259-f322-fb02-80f8-c0560f34d8ae.png)

exitで終了しましょう。（3つ分なので3回打ってください）

## セッション、ウィンドウ、ペインについて
ここからはtmuxの概念であるセッション・ウィンドウ・ペインについて説明していきます。

### セッション
まずターミナルからセッションを起動します。
これは先ほどやった通り
```Bash:セッションを起動する
tmux
```
で起動が完了します。ではセッション周りを確認するために以下の手順でコマンドを叩いてみましょう。

#### ①セッションに名前をつけて起動する
```Bash:名前をつけてセッションを起動する
tmux new -s Default
```
※今回はDefaultというセッションを起動しています。

tmuxのセッションが起動したと思います。

#### ②セッションを中断してメインのターミナルに戻る
```Bash:一時的にターミナルに戻る
# controlを押しながらbを押す -> 手を離す -> dを押す
control + b -> d
```

これでメインのターミナルに戻ったと思います。

:::note info
ここでは一時的に中断しているだけなので、入り直すことができます。
:::

#### ③Defaultのセッションを開き直す
```Bash:開き直し
tmux a
```
これで先ほどまで起動していたDefaultと名付けたセッションが再開しました。

#### ④再度出て、新しいセッションを作成
```Bash:新規セッションの作成
tmux new -s Normal
```

#### ⑤セッションの一覧を確認してみる
これはいくつかやり方があるのですが、まずメインのターミナルとセッション上どちらでも確認ができる方法があります。
```Bash:セッションの数を確認する
tmux list-sessions	
```

もう一つ確認する方法がプレフィックスを使う方法です。
```Bash:もう一つの確認方法
# controlを押しながらbを押す -> 手を離す -> sを押す
control + b -> s
```

:::note warn
ただ、この後紹介するウィンドウを確認する方法の時にセッションの一覧も表示されるので、あまり使わないと思ってもらって大丈夫です。
ただ、tmuxのセッションを使っていない状態でも確認ができる`tmux list-sessions`の方はたまに使います。
:::

以下のようになっていたら正しくセッション開始されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/f79a526c-d809-8190-fe91-edc6d0394435.png)

今はDefaultとNormalの二つのセッションがある、ということですね。
で、ここでattachedと書かれている部分が、現在いるセッションのことです。
アタッチされた（接続された）、デタッチされた（接続が切り離された）という言葉がtmuxでは使われます。
```Bash:アタッチ
tmux a
```
```Bash:デタッチ
# controlを押しながらbを押す -> 手を離す -> dを押す
control + b -> d
```

### ウィンドウ
次にウィンドウについて解説します。
まず大前提として、**一つのセッションの中には必ず一つ以上のウィンドウ**があります。
そして、セッションの中にたくさんのウィンドウを作れます。

ウィンドウの操作はセッションとはまた別ですので、順番にみていきましょう。

#### ①ウィンドウを作ってみる
```Bash:ウィンドウを作る
# controlを押しながらcを押す -> 手を離す -> cを押す
control + b -> c
```
新しくウィンドウが作られたはずです。
ちょっとこのままだとわかりにくいので、ウィンドウに名前をつけたいと思います。

#### ②ウィンドウに名前をつける
```Bash:ウィンドウの命名
# controlを押しながらbを押す -> 手を離す -> ,を押す
control + b -> ,
```
これを実行すると、名前を変更できるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/dcc0a683-d78a-b3dc-4cd3-9eba5ce42d53.png)

ではzshを消して、今回はNumber2という名前をつけてみましょう。

#### ③ウィンドウ一覧を確認
```Bash:一覧を確認
# controlを押しながらbを押す -> 手を離す -> wを押す
control + b -> w
```
以下のような表示になっているなら成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/b7f34384-dbfd-d642-0914-f6e9a15f452d.png)

Number2というウィンドウがあると思います。
上下キーで移動が可能です。一つ上のウィンドウに移動してみましょう。

:::note info
Vimに慣れている人なら、j,kで上下に移動可能です。
:::


そちらも名前を変えて、Number1にしてみてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/7d6001f7-9813-9ce8-a8a7-1400418620ab.png)

#### ④ウィンドウ間の移動
```Bash:ウィンドウ間を移動してみる
# controlを押しながらbを押す -> 手を離す -> n or pを押す（nは次、pは前に移動）
control + b -> n or p
```

#### ⑤ウィンドウを終了する
終了方法は2パターンあります。後者の方は確認メッセージが出てくるので安全です。
```Bash:終了方法
exit

or

# controlを押しながらbを押す -> 手を離す -> &を押す
control + b -> &
```

### ペイン
次にペインの解説をいたします。
ペインはウィンドウの中にさらに細かなターミナルを作れるものです。最初に行った画面分割は、ペインを作っていたということになります。

縦に割る、横に割るは行ったと思いますので、再度やってみましょう。
```Bash:画面分割のおさらい
# （横分割）controlを押しながらbを押す -> 手を離す -> %を押す
control + b -> %

# （縦分割）controlを押しながらbを押す -> 手を離す -> "を押す
control + b -> "
```

ではこの状態で次の操作を順番に行っていきましょう。

#### ①ペイン間を移動してみる
```Bash:ペインの移動
# controlを押しながらbを押す -> 手を離す -> 十字キーを押す
control + b -> 十字キー
```

#### ②ペインの番号を確認して移動
```Bash:ペイン番号を確認
# controlを押しながらbを押す -> 手を離す -> qを押す
control + b -> q
```

これを実行すると各ペインに番号が表示されると思います。
この番号を基準に移動も可能になっています。
```Bash:書き方
# controlを押しながらbを押す -> 手を離す -> oを押す
control + b -> o
```
次のペインに移動ができます。逆に戻るには`control + b -> ;`で戻ることができます。

:::note warn
十字キーで移動した方が最初は直感的で良いかもしれないですね。
:::

#### ③ペインの全画面化
ペインは区切れば区切るほど小さくなるので、その画面を画面いっぱいにすることで使い勝手をあげることもできます。
```Bash:ペインの最大化
# controlを押しながらbを押す -> 手を離す -> zを押す
control + b -> z
```
もう一度同じコマンドを打つと元に戻ります。

#### ④ペインの削除
ペインを消すには以下のプレフィックスで可能になっています。
```Bash:ペインの削除
# controlを押しながらbを押す -> 手を離す -> xを押す
control + b -> x
```

これを実行すると、本当に消しますか？といった質問がされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/f91058f5-d057-79e8-d324-2e601a0e3c39.png)

これにyを入力すると削除がされます。


## おわりに
ここまで、まずは基本のコマンドについて解説しました。
ターミナルの画面を分割できることで、片方でサーバーを動かしておいて、右で普段のコマンドを叩いたり、Dokcerコンテナのログを開きながら、隣のペイン上でコンテナの中に入ったりと用途は様々あります。

快適なシェルライフを送るためにも、ぜひお試しください。
次回はこのtmuxの設定ファイルのいじり方、自分専用の設定方法について解説します。

次の記事はこちら👇

https://qiita.com/ikemura-ren/items/9b558fc99584f1fbc659

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

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