tmuxの基本操作

# **はじめに**
tmuxにもだいぶ慣れ、もはやtmux無しでは生きられない体になってしまったため、
死なないように使い方をメモっておこうと思います

少しづつ充実させていければいいなという気概です

# **概要**
- セッション操作
- ウィンドウ操作
- ペイン操作
- その他の操作


# **セッション操作**
## セッションの作成・削除
### 作成
```shell-session:セッション作成
# セッションを作成し、作成したセッションにアタッチする
[root@centos ~]# tmux new-session -s <session-name>

# 上記のオプション省略バージョン
[root@centos ~]# tmux new -s <session-name>

# セッションを作成するが、作成したセッションにはアタッチしない
[root@centos ~]# tmux new -s <session-name> -d

# この書き方でも上記と同じことになる
[root@centos ~]# tmux rename-session <session-name>
```

```text:セッションにアタッチした状態からのセッション作成
<Prefixkey> : new-session -s <session-name>
<Prefixkey> : new -s <session-name>
```



### 削除
```shell-session:セッション削除
# 特定のセッションを削除
[root@centos ~]# tmux kill-session -t <session-name>

# 全てのセッションを削除する
[root@centos ~]# tmux kill-server
or
[root@centos ~]# tmux kill-session -a
```

```text:セッションにアタッチした状態からのセッション削除
<Prefixkey> + x
kill-pane <window-name>? (y/n)
```

## セッションへのアタッチ・デタッチ
```shell-session:アタッチ
[root@centos ~]# tmux a -t <session-name>
```

```bash:セッションへアタッチしている状態からのデタッチ
<Prefixkey> d
```

## セッション間の移動
```bash
<Prefixkey> :choose-session

もしくは

<Prefixkey> s
```

こんな感じでセッション一覧のメニューが出るので選択すると対象セッションへ移動する
![WS000512.png](https://qiita-image-store.s3.amazonaws.com/0/79134/d8c06de3-4215-2338-7cad-f607166d8f7b.png)

## セッション一覧の表示
```shell-session:セッション一覧表示
[root@centos ~]# tmux ls
ansible: 1 windows (created Tue Jul 26 11:12:23 2016) [294x78]
nginx: 1 windows (created Fri Jul 29 16:53:06 2016) [294x78]
centos7: 1 windows (created Tue Jul 26 10:18:50 2016) [294x78]
```

## セッション名の編集
```shell-session
[root@centos ~]# tmux rename-session -t <target-session> <new-sessionname>
```

# **ウインドウ操作**
## ウインドウの作成・削除
```shell-session:作成
# 最後にアタッチしていたセッションに新しいウインドウを追加
[root@centos ~]# tmux new-window

# 対象のセッションにウインドウを追加
[root@centos ~]# tmux new-window -s <session-name>
```

```bash:アタッチした状態からのウインドウ作成
# 対象のセッションにアタッチした状態からのウィンドウ作成
<Prefixkey> c
```



## ウィンドウ間の移動
```bash:ウィンドウ移動
# 次のウィンドウへ移動
<Prefixkey> n

# 前のウインドウへ移動
<Prefixkey> p
```

```bash:ウインドウリストでの移動
<Prefixkey> :choose-window

もしくは

<Prefixkey> w
```

こんな感じでウィンドウ一覧のメニューが出るので選択すると対象ウィンドウへ移動する
![WS000513.png](https://qiita-image-store.s3.amazonaws.com/0/79134/0eb00723-6a1e-93e1-a01a-e20c7a09f809.png)



## ウインドウ名の編集
```bash:編集
<Prefixkey> ,
(rename-window)[new-name]
```

# **ペイン操作**
## ペインの分割
```bash:分割
# 縦分割
<Prefixkey> :split-sindow -h

# 横分割
<Prefixkey> :split-sindow -v
```

以下のような設定で`|`（パイプ）で縦分割、`-`（ハイフン）で横分割できるようにしております。

```vim:tmux.conf
## | でペインを縦に分割する
bind | split-window -h     
                           
## - でペインを横に分割する
bind - split-window -v     
```


## ペインの移動
```bash:移動
# 矢印キーでのペイン間移動
<Prefixkey> ↑ or ↓ or → or ←
```

ぼくはVimのキーバインドで移動できるようにしております。

```vim:tmux.conf
bind h select-pane -L     
bind j select-pane -D     
bind k select-pane -U     
bind l select-pane -R     
```

## ペインの同期
```bash:同期
# 複数のペインに対して一斉に同じ文字を入力
<Prefixkey> set-window-option synchronize-panes [ on | off ]
```

もちろんショートカットキーでON/OFFできるように設定しております

```bash:tmux.conf
bind-key e setw synchronize-panes on
bind-key E setw synchronize-panes off
```

## ペインのサイズ変更


# **その他の操作**
## tmux.confファイルの読み込み
以外とこれがわからなくて結構ハマったりしたことがありますｗ

```bash
<Prefixkey> :source-file ~/.tmux.conf
```

# **参考**
- [tmuxで快適なターミナル生活を送ろう](http://qiita.com/zwirky/items/adbf22abad7d7822456b)