tmuxの練習問題


# 目的
- tmuxの操作に慣れるため、よく使いそうな操作を学ぶ
- 手グセで操作できるようになりたい、一式の操作を打ち込めるサーキットトレーニングコースを作る
- 練習で打つコースは、今後知っておいたほうがいい操作が出てきたら追加していく、実務の中であんまり使わないな、と思ったものと入れ替えていく

## 環境
- ubuntu
- iterm2
- vagrant

## 操作(設定ファイル周り)
- 設定ファイルをいじる
 - ~/.tmux.conf を作成し、この中に記載する

- ショートカットキーを割り当てる
 - bind -r (キー) (コマンド) -(オプション) (パラメータ)
 - -r　オプションをつけると、連打した操作が可能

- プレフィックスキーを変更する
 - set -g prefix C-y (プレフィックスキーをControl + y に変更する)
 - unbind C-b (C-bのプレフィックスキーを無効にする)

- プレフィックスキーを何にすべきか。というのはやっぱり重要だが、使っている人によってバラバラのよう。
 > screen/tmuxのコマンドプレフィックスキーは何がベストか？
 > https://qiita.com/hnw/items/02113da3476f29df768b

- 設定ファイルのリロード
 - C-b :
 - source-file ~/.tmux.conf

- 設定ファイルのリロードを、プレフィックスrで適用する設定
 - bind r source-file ~/.tmux.conf

- 再読み込み時にメッセージを表示する　
 - bind r source-file ~/.tmux.conf \; display "Reloaded!"
 - \; は、続けて処理を行う


- キーバインドの確認
　tmux list-keys

- プレフィックスキーをなしにする設定
 - bind -n キー　コマンド　（これで設定した場合、プレフィックスキーなしでその操作ができるようになる）
 - ペイン移動をシフトと方向キーで移動する設定
 - > https://blog.monochromegane.com/blog/2013/12/12/tmux-no-prefix/

```
bind -n S-left select-pane -L
bind -n S-down select-pane -D
bind -n S-up select-pane -U
bind -n S-right select-pane -R

```

## 操作

- セッションを開始
 - tmux new -s セッション名

- detouch
 - Control + b (プレフィックスキーと言う:C-bと書く)
 - d

 - atach
  - tmux a -t セッション名
  - tmux attach - プロジェクト名　（aはattachを略している）

- セッションを作るだけ（アタッチしない）
 - tmux new -s セッション名 -d

- セッション名を変更
 - C-b $
 - 新しい名前

- 状態を確認する
 - tmux ls

- セッションを削除する
 - tmux kill-session -t セッション名

- セッションを全て削除する
 - tmux kill-server

- プレフィックスキーでできるコマンドを確認する
 - C-b ?(プレフィックスキー後に?)
 - esc(キーで脱出)

- ウインドウを増やす
 - C-b c

 - ウインドウの見方　[セッション名]0:bash 1:bash* （２つウインドウがある状態　アスタリスクは現在のウインドウ）

- ウインドウ切り替え
 - C-b ウインドウ番号
 - C-b n (次のウインドウへ) C-b p (前のウインドウへ)

- ウインドウ名の変更
 - C-b , (カンマ)

- ウインドウを一覧から選択
 - C-b w

- ウインドウを検索
 - C-b f

- ウインドウを削除
 - C-b &

- 画面を分割する
 - C-b "　(たて)
 - C-b % (横)

- 分割した画面を移動する
 - C-b o

- 指定した 番号にジャンプする
 - C-b q (ペイン番号を表示) 表示されている間にその番号を入力

- ペインを移動する
 - C-b {　（前に移動させる）
 - C-b }   (後ろに移動させる)

- ペインを削除
 - C-b x

- ペインをウインドウで開く
 - C-b !

- ペインのサイズ変更
 - C-b :
 - resize-pane -U 5 (五行上げる)

- コピー/貼り付け
 - C-b [
 - コピーしたい位置で　スペース　選択したら　Enter
 - C-b ] 　（貼り付け）
 - コピーは、複数連続で行うことができ、バッファに保存される。バッファに保存されている内容を確認するには
 - C-b :
 - list-buffers
 - C-b = でリストから選択して貼り付けることができる




## 練習 tmux千本ノック
- セッションを３つ作り、
- 二つ目のセッションを開き
- セッション名を10倍し
- 一つ目のセッションを削除し
- 全体のセッションを確認する
- ３つウインドウを作り
- 3つ目のウインドウを削除し、
- 一つ目のウインドウに移動し
- ウインドウ名を変更する
- セッションをデタッチし、
- Test3セッションにアタッチする
- セッションTest4 Test5 Test6を作る
- セッションをでタッチしTest5にアタッチする
- セッション　Test1 Test2を削除する
- ウインドウ3つを作る
- ３番目のウインドウに移動する
- 2番目のウインドウに戻る
- 縦にペインを分割する
- 横にペインを分割する
- ペイン０に移動し横に分割する
- 次のペインに移動し、別ウインドウで開く
- 戻り、２つ前のペインに移動する
- 二つ後のペインに移動する
- 最初の0以外のペインを削除する

```
tmux new -s Test1
C-b d
tmux new -s Test2
C-b d
tmux new -s Test3
C-b d
tmux a -t Test2
C-b $ Test20
tmux kill-session -t Test1
tmux ls
C-b c
C-b c
C-b c
C-b 2
C-b &
C-b w
C-b , test1
C-b d
tmux a -t Test3
tmux new -s Test4 -d
tmux new -s Test5 -d
tmux new -s Test6 -d
C-b d
tmux a -T Test5
tmux kill-session -t Test1
tmux kill-session -t Test3
C-b c
C-b c
C-b c
C-b n
C-b n
C-b n
C-b p
C-b "
C-b %
C-b q
C-b %
C-b !
C-b o
C-b o
C-b p
C-b p
C-b x
```

- 毎日反復でやる
- まずはコマンドをみてやる
- 慣れてきたら、操作だけみてやる
- 便利な操作を知ったら追加していく


-----

## 参考

> tmuxを使い始めたので基本的な機能の使い方とかを整理してみた
> http://kanjuku-tomato.blogspot.jp/2014/02/tmux.html
- そもそもtmuxってどういう時にありがたいの？セッションとは？など

> tmuxチートシート
> https://qiita.com/nmrmsys/items/03f97f5eabec18a3a18b

> tmuxのプレフィックスに疲れたらbind -nオプションを使おう
> https://blog.monochromegane.com/blog/2013/12/12/tmux-no-prefix/

> 達人に学ぶ.tmux.confの基本設定
> https://qiita.com/succi0303/items/cb396704493476373edf

> screen/tmuxのコマンドプレフィックスキーは何がベストか？
> https://qiita.com/hnw/items/02113da3476f29df768b