tmux 用の cdd (ウィンドウ番号を指定して cd)
GNU screen のとき定義していた cdd という、既に開いている別ウィンドウのディレクトリにcdするコマンドがあった(ref. cdd とお別れして、別の cdd を定義した | tech - 氾濫原 )。このままでは tmux で動かないので書きかえた。
function cdd() {
typeset -A mapping
local window=$1
mapping=($(tmux list-windows -F '#{window_index} #{pane_current_path}'))
local dir=$mapping[$window]
if [[ $dir == "" ]]; then
echo "window not found"
else
cd "$dir"
fi
} GNU screen のときはややトリッキーなことをしていたけど、tmux だとlist-windows の出力を工夫するとマッピングを直接得られるので、zsh の連想配列に入れてそのまま取得できた。(逆に、tmux だと環境変数にウィンドウ番号は入っていないので、screen のときの方法だとうまくできない)
今のところ自分は window 内を複数 pane に分割しないのでこれでうまくいくんだけど、分割すると結果が不定になりそう。
元々書いてた cdd は引数なしで実行するとリストを表示して選択して cd できるようにしていたけど、全く使わなかったので機能自体をなくした。
なぜか list-windows ではなく list-panes していたので、list-windows を使うように変更した
関連エントリー
- (zsh/tmux/WSL) ターミナルの作業中ディレクトリにOSの「ファイルを開く」からもアクセスしたい motemen さんの ターミナルの作業中ディレクトリにOSの「ファイルを開く」からもアクセスしたい を見ていいなと思ったので自分もやってみ...
- WSL2 の .vhdx はどこ? dir "$env:LOCALAPPDATA\Packages\*UbuntuonWindows*\LocalState\*.vhdx" で...
- tmux で prefix 入力中や copy モードをわかりやすくする set-option -g status-left "#[fg=colour255,bg=colour23]#{?client_prefix...
- NiZ Keyboard PLUM のキーマップを macOS や Linux から書き換える 前回 に引き続き NiZ のキーマップをごにょごにょする。 とりあえず表題の通り、キーマップの書きかえまではできた。 レポジトリ: http...
- uutransfer for tmux (接続済み SSH セッションからファイルをダウンロードする) 接続済み SSH セッションからファイルをダウンロードする というエントリを2012年ぐらいに書いて、その中で uutransfer という...