Tag: Tmux

cheat sheet tmux

現在のショートカット

キーバインドコマンド
?ショートカットキーのリストを表示
c新しいウィンドウを作成
n次のウィンドウへ移動
SPACE次のウィンドウへ移動
p前のウィンドウへ移動
BS前のウィンドウへ移動
o次のペインへ移動
wウィンドウの選択メニューを表示
dセッションのデタッチ
:コマンドプロンプトの開始
'ウィンドーに名前をつける
[コピーモードの開始
]バッファ内容のペースト
qペインのインジケータを表示
%ウィンドウを左右のペインに分割
{ペインの入れ替え
}ペインの入れ替え(逆順)
lペインの左右分割位置を左へ移動
hペインの左右分割位置を右へ移動
xペインの破棄

コマンドプロンプトでの使い方

効果オプション
すでに開いたセッションにアタッチするtmux attach
ウィンドウの一覧を取得するtmux list-windows (C-b w)
新しいウィンドウを作るtmux new-window (C-b n)
クライアントをデタッチするtmux detach-client (C-b d)
キーバインドの一覧を表示するtmux list-keys (C-b ?)
次のウィンドウを表示するtmux next-window (C-b n)
前のウィンドウを表示するtmux previous-window (C-b p)
ウィンドウを強制的に閉じるtmux kill-window (C-b k)
最後のセッションを削除するtmux kill-session
セッション名FOOを指定してセッションを削除するtmux kill-session -t FOO
すべてのセッションを削除するtmux kill-server

参考

Read more...

CLIツールのショートカットを統一していきたい

背景

CLI関連のツール、tmux, w3m, weztermのキーバインドを揃えたい。ひとまずリストを出す。 ローカルのマシン(macOSなりLinuxなどのデスクトップ環境)ではWezTermとtmuxを用いている。 (以前はgnome-terminal, mltermを用いていたが、sixel対応と設定がluaで書ける点からWezTermを始めた)

将来的に下記の条件が成立したらgnome-terminal, mltermに戻るかも

  1. tmuxのsixel対応が安定動作する
  2. macOS, Linuxの設定ファイルを共通にしたい(WezTermだとOSによってif文で設定を変えられる)
  • tmuxもif-shellで振る舞いを分岐できるようになった

関連ページ

WezTermtmuxneovimw3m
cheat sheetcheat sheet tmuxcheat sheet vimcheat sheet w3m
私のメモtmuxvimw3m
私の設定リポジトリ

現在のキーバインド

prefix

WezTerm(tmux1)tmux2(ローカルで用いる)tmux3(リモートで用いる)
ctrl + yctrl + tctrl + b

リモートサーバ上でtmuxを用いる場合はtmux3のprefixを使う。

ショートカット

weztermtmuxneovimw3m
新しいウィンドウ(タブ)を作るcctabnewCtrl + T
現在のウィンドウ(タブ)を閉じるCtrl + d でexitCtrl + d でexit:wqCtrl + Q
ウィンドウ(タブ)を右に移動nngt}
ウィンドウ(タブ)を左に移動ppgT{
ウィンドウ(タブ)のリストEsc + t

設定が被らないように既存の設定を確認する

環境表示方法設定ファイル
bashbind -P~/.inputrc
fishbind あるいは fish_key_reader~/.config/fish/functions/fish_user_key_bindings.fish
tmuxprefix -> :list-keys~/.config/tmux/tmux.conf
w3m起動中にHを押す~/.w3m/keymap
wezterm
Read more...

tmux関連

mac にソースコードからインストール

2024/01時点のbrewのパッケージがsixel未対応だったのでソースからインストール

brew install autoconf automake pkg-config utf8proc
git clone https://github.com/tmux/tmux.git
cd tmux
sh autogen.sh
./configure --enable-sixel --enable-utf8proc
make
sudo make install

/usr/local/bin 配下にインストールされる。

コンテナ環境内のtmuxを使おうとするとターミナルのリサイズを検知しない

2024/02頃、Rancher Desktopで起きたのだが、ターミナル内でコンテナを起動し、コンテナ内のtmuxを起動して使ったところ、tmuxがターミナルのサイズ(COLS, LOWとか)に合わせてリサイズしなかった。

ターミナルはウィンドウのリサイズ時、中のプログラムにSIGWINCH( ウィンドウサイズ変更 )シグナルを送る。 コンテナはうまくこれを拾えていない可能性がある。

mac側のtmuxを利用する分にはうまくいく。

プラグインマネージャ、tpmのインストール

ghq get https://github.com/tmux-plugins/tpm
mkdir -p ~/.config/tmux/plugins
cd ~/.config/tmux/plugins
ln -s ~/workspace/git/github.com/tmux-plugins/tpm ./tpm

tmux.confの最後に下記を追記

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

上記の前に追加したいプラグインを列挙。tmuxの設定を再読込して、prefix + I でインストール。

set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-open'
set -g @plugin 'tmux-plugins/tmux-copycat'

追加したプラグイン

  • tmux-copycat
    • URLをハイライトさせる
    • prefix + ctrl-u
  • tmux-open
    • ハイライトしたURLを開く
      • macはopen
      • linuxはxdg-opnen
    • oキーの振る舞いを変える場合
      • set -g @open ‘w3m’
    • エディタを変更する場合
      • set -g @open-editor ‘C-x’

URLを w3m で開きたい

tmux-openはlinuxではxdg-openを用いてURLを開く。 xdg-open( xdg-utils - ArchWiki )はxdg-mime( xdg-utils - ArchWiki )に問い合わせを行い対象を開く。 xdg-mimeの設定はxdg-settingsを用いて行う。

Read more...