Tmux

使用一個命令在兩個視窗中執行 cd

  • June 29, 2019

我使用了 iTerm2。我經常將窗格分成兩個視窗。當我想更改一個目錄時,我還想自動更改另一個目錄。這可能嗎?Tmux 解決方案也將受到歡迎。

Iterm2

廣播到選項卡中的所有窗格

command+option+i

廣播到所有選項卡中的所有窗格

command+shift+i

筆記

使用相同的組合鍵打開/關閉。

從菜單

Shell > 廣播輸入

我還沒有使用 tmux,所以可能有更好的方法來做到這一點。這個答案也是以 bash 為中心的,因為這是我最熟悉的 shell。我確信其他 shell 也有類似的概念,這可以適應。

基本思想是讓初始視窗源有一個腳本,該腳本設置一個在顯示新的 shell 提示符之前呼叫的函式;第二個視窗將獲取一個單獨的第二個腳本。每噹噹前目錄更改時,第一個腳本的函式都會更新 TMUX_PWD tmux 變數。第二個腳本的函式檢查 TMUX_PWD 變數並在其目前目錄不同時更改目錄。

主視窗的程式碼:

function prompt_command_primary {
 if [[ "$(tmux showenv TMUX_PWD | cut -d= -f2)" != "$PWD" ]]
 then
   tmux setenv TMUX_PWD "$PWD"
 fi
}

PROMPT_COMMAND='prompt_command_primary'
# initialize it
tmux setenv TMUX_PWD "$PWD"

輔助視窗的程式碼:

function prompt_command_mirror {
 if [[ $(tmux showenv TMUX_PWD | cut -d= -f2) != "$PWD" ]]
 then
   cd -- "$(tmux showenv TMUX_PWD | cut -d= -f2)"
 fi
}

PROMPT_COMMAND='prompt_command_mirror'
# initialize ourselves
prompt_command_mirror

在我看來,這似乎是讓第二個視窗根據第一個視窗更改目錄的最優雅方式。

引用自:https://unix.stackexchange.com/questions/345994