2019年8月17日土曜日

tmuxのメモ

ubuntu16.04,  tmux 2.1
ubuntu20.04 tmux 3.0

(バージョンを見るときは $ tmux -V )

※赤くハイライトしている部分は個人的に重要だと思っていて、よく使うものです。
---

tmuxとは

  • terminal multiplexer (マルチプレクサ)
  • 1つのウィンドウで複数のターミナルを管理できます。
  • 便利ですが、少し学習が面倒です

tmux便利だと思うところ

  • ターミナルを1つにまとめられること
  • ウィンドウを閉じても、ログアウトしても再開できること(tmux -a で再開)

tmux不便なところ

  • デフォルトではかなり使いにくい(→configファイルを書く)
  • コピーペーストは、右クリックしながらでないとできない
  • マウスではスクロールが大きくできない
    • バーが出てこないのでマウスでは移動し辛い。
    • 対応策→viの移動を使う。
      • 『マウスカーソルを動かす』、または『 C-b, [ 』 でコピーモードに。viの移動が使えるようになる
        • Ctrl d / u / f / bで半画面下/上/ 1画面下/上
        • C-b のときはPrefixをかぶるので2回押さないといけない

インストール

$ sudo apt install tmux

用語

  • Prefix・・・コマンド入力を開始するキー。デフォルトはCtrl+b 。押しづらい。
  • クライアント(=セッション)・・・ターミナルに相当
  • ウィンドウ・・・ターミナルの中の画面
  • ペイン・・・ウィンドウを分割したもの

コマンド

※ $ ...  はターミナルでのコマンド。 $ なしは tmux上でのコマンド
※ C-b, a  は  Ctrl-b のあとに a  の意味
※ a[ttach] は a でも attach でも同じ の意味

$ tmux  起動

C-b, d tmuxから抜ける。デタッチ

$ tmux a[ttach] 前回デタッチしたところから起動

$ tmux a[ttach-session] -t num セッション番号numを起動

$ tmux ls   立ち上がっているクライアントを確認できる

$ tmux kill-session -t num  セッション#num を消す

$ tmux kill-server  全セッションを消す

C-b, ?  コマンド一覧を表示
C-b, "  ペインを上下に分割
C-b, %  ペインを左右に分割
C-b, ↑↓←→ カーソルを上下左右のペインに移動する
C-bを押したまま↑↓←→ ペインサイズ変更 (=ペインの端をマウスドラッグ)
C-b, Altを押したまま↑↓ 同上
C-b, o  ペインを移動する(ローテーション)
C-b, z  カレントペインが最大になる(C-b, z/o で戻る)
C-b, x  ペインをkill(=C-d ,  $ exit)
C-b, &  ウィンドウをkill

paneを別windowを移動させるときは

C-b, : でコマンドモードに入る
:join-pane  [-s src-pane] [-t dst-pane]  

今いるペインをwindow[1]に送る  

join-pane -t :1

: が必要なので注意

https://unix.stackexchange.com/questions/14300/moving-tmux-pane-to-window/14301


こちらでもできそう
https://askubuntu.com/questions/824496/how-do-i-access-tmux-session-after-i-leave-it

tmuxターミナルの下側のバーの意味


こんなの→[1] 0:bash*ZM

[1]  Session num
0: Window num
bash Window name
* current window
- previous window
Z one pane is maximized
M Marked pane

Marked pane については
・-s to join-pane, swap-pane and swap-window のデフォルトのターゲットになる
・C-b m で On/Offできる
あまり使えていない。
https://superuser.com/questions/1056977/uppercase-m-at-the-right-of-window-name-in-tmux

コピーペースト

マウスでドラッグ, コピー

(set -g mouse on を.tmux.confに記入すること)
SHITFキーを押しながらドラッグ右クリック ※先にドラッグできない


viモードでコピペ

(set-window-option -g mode-keys vi を .tmux.confに記入すること)

C-b, [  コピーモードに入る。viの操作で移動できるようになる。
→ Spaceでドラッグ開始。
→ Enter でクリップボードにコピー、通常モードに戻る

ペースト
C-b, ] 
※コマンドをコピーすると

xclipをインストール
.mux.confに下記を記入
bind -t vi-copy y copy-pipe "xclip -sel clip -i"

マウスで上の画面を表示しようとするとコピーモードに入ります。移動はviのコマンド: gg(先頭へ) G(末尾へ) C-u (半画面上へ) C-d (半画面下へ)が使いやすい。

ペインを別ウィンドウに移動する

C-b, :pane-join -s :0 -t :1

とすると、Window0のアクティブペインが、Window1のアクティブペインの下に移動します。
https://unix.stackexchange.com/questions/14300/moving-tmux-pane-to-window

使い勝手をよくするため、 .tmux.conf にオプションを書く

.tmux.conf
をホームに置いて、オプションを書く。


方法1. 再読み込みコマンド(再起動は不要)
$ tmux source-file ~/.tmux.conf

方法2. tmux kill-serverで全て消してから再起動する

.bashrcが反映されないとき

tmuxに入るとbashrcの内容が反映されないということがあります。bash_profileを使うからなので、.bash_profile の末尾に 
. ~/.bashrc 
と入力する。これでpash_profileからbashrc を呼び出してくれる。

https://stackoverflow.com/questions/9652126/bashrc-profile-is-not-loaded-on-new-tmux-session-or-window-why

.tmux.confの例

シンタックスハイライト

set -g default-terminal "screen-256color"

日時表示を右下のバーに

set -g status-right "#[fg=cyan]%Y/%m/%d %H:%M %A"

とすると、

fontはcyanで、2020/02/22/ 12:00 土曜日 のように表示されます。

マウスを使えるようにする(>2.1)

set -g mouse on

デフォルトではマウスで操作できないので、できたほうが嬉しいです。tmux2.1からこの書き方になったようで、以前の書き方をコピペすると unknown option: mode-mouse というエラーが出たりします。

新しいウィンドウ、ペインをHOMEではなくカレントディレクトリで開く 参考

bind c new-window -c "#{pane_current_path}"
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"

my .tmux.conf

# When create new window, use current directory
bind c new-window -c '#{pane_current_path}'
bind '"' split-window -c '#{pane_current_path}'
bind % split-window -h -c '#{pane_current_path}'

# vi key-bind in copy mode
set-window-option -g mode-keys vi

set -g mouse on
set-option -s set-clipboard on
set-option -g default-command bash
set -g default-terminal "screen-256color"
set -g status-fg white
set -g status-bg black
set -g status-right "#[fg=cyan]%Y/%m/%d %H:%M %A"


画面コマンドチートシート

0 件のコメント:

コメントを投稿