tmuxの使い方
概要
- tmux — terminal multiplexer
- いくつかの管理粒度に分かれており以下のようになっている
session
window
pane
リリースページ
github
ビルドしてインストールする場合
- debian等は入っているバージョンが古いので、自分でコンパイルして入れたほうがいい
依存
ubuntu, debian
$ sudo apt install libevent-dev
$ sudo apt install autoconf automake pkg-config
$ sudo apt install libbison-dev # yaccというソフトウェアが必要になるので入れる
osx
$ brew install automake
$ brew install autoconf
$ brew install pkg-config
$ brew install utf8proc # headerが足りないことがある
コンパイルとインストール
$ git clone https://github.com/tmux/tmux.git
$ cd tmux
$ sh autogen.sh
$ ./configure --prefix=$HOME/.local # インストール先を適宜設定
$ make
$ make install
各種操作
セッションを確認する
$ tmux ls
セッション名を指定して接続
$ tmux a -dt <settion-name>
tmuxをサスペンドする
- ショートカット
prefix
+C-z
現在の出力(stty)を一時停止する
- ショートカット
C-s
現在の出力(stty)を再開する
- ショートカット
C-q
設定されているキーバインドを確認する
- コマンド
:list-keys
windowを作成する
- コマンド
:attach-session -c "#{pane_current_path}" -t . \; new-window \; display-message "create new window"
windowをkillする
- コマンド
:kill-window .
windowを垂直に割りpaneを作成する
- コマンド
:split-window -h
windowを水平に割りpaneを作成する
- コマンド
:split-window -v
windowをリサイズする
- 2つ以上のクライアントから接続すると画面がフィットしなくなるのでリサイズが必要になる
- コマンド
:resize-window -A \; refresh-client -S \; display "resize and refresh window"
session->windowを選択する
- コマンド
:choose-tree -Zs \; display "choose tree." \; resize-window -A
マウスでの操作
iterm2
+mosh
+tmux
では不完全ながらもマウスクリックが一応動作する- 使える用途
- paneを分割した際の選択
- paneのリサイズ(境界をドラッグ)
- 特定のマウスイベントで選択ボックスを開く
Shiftと左クリックの例
bind -T root -n S-MouseDown1Pane <command>
設定
.tmux.confでの色の認識設定
- 256色は特別な設定をしなくても有効になるが、24 bit color(true color)は以下のような
.tmux.conf
が 2020年から必要
# 256 color(from ver 2.1)
set -g default-terminal "xterm-256color"
# これは有効にしていないといろいろ不便がある
# 24bit color(from ver 3.0)
set -sa terminal-overrides ",xterm*:Tc"
24 bit color(true color)が動作しているかチェック
$ wget https://raw.githubusercontent.com/JohnMorales/dotfiles/master/colors/24-bit-color.sh
$ bash 24-bit-color.sh
ステータスバーの色設定
256色で指定
set-option -g status-bg "colour166"
true colorで指定
set-option -g status-bg "#FFB200"
設定の中でシェルスクリプトを実行する
run-shell "bash <script.sh>"
設定の中でシェルスクリプトで挙動を変える
if-shell '[ `uname` = "Darwin" ]' {
set -g status-right '#{host} #[fg=white,bold,bg=#6D6D6B]Disabled#[default]'
}
if-shell '[ `uname` = "Linux" ]' {
set -g status-right '#{host} #[fg=white,bold,bg=#6D6D6B]#(date "+%F %H:%M:%S")#[default]'
}
トラブルシューティング
macOSでイタリックが表示されない
- 原因
- terminfoでitalic時の挙動が定義されていないことが原因
- 対応
- 適切に設定した
tmux-256color.terminfo
とxterm-256color-italic.terminfo
を用意してtic
コマンドでロード set -as terminal-overrides ',xterm*:Tc:sitm=\E[3m'
を設定- 必要に応じてvimの設定も変更
- 適切に設定した
- 参考