• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

tmux

date: 2020-07-15 excerpt: tmuxの使い方

tag: tmux


tmuxの使い方 

概要

  • tmux — terminal multiplexer
  • いくつかの管理粒度に分かれており以下のようになっている
    • session
      • window
        • pane

リリースページ

  • リリース

github

  • 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

スクロールモード(copy mode)に入る

  • スクロールモードは以下のことができる
    • 流れてしまった過去の出力を確認する(page up/downができる)
    • 過去の出力をコピーする
  • ショートカット
    • prefix + [
  • スクロールモードを終了する
    • q or Esc

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の設定も変更
  • 参考
    • How to actually get italics and true colour to work in iTerm + tmux + vim
    • I really need help with italic and truecolor


tmux Share Tweet