Tmux

如何在 tmux 的目前目錄上創建一個新視窗?

  • March 31, 2022

是否可以打開一個new-window其工作目錄設置為我目前所在的目錄。我正在使用zsh,如果它重要的話。

tmux 1.9 開始,該default-path選項已被刪除,因此您需要將該-c選項與new-window, and一起使用split-window(例如,通過重新綁定c"%綁定以包含

-c '#{pane_current_path}')。有關詳細資訊,請參閱此問題的其他一些答案。


一個相關功能於 2012 年 2 月上旬登陸tmux SVN 主幹。在包含此程式碼的tmux建構中,呼叫的tmuxnew-window鍵綁定將創建一個新視窗,其目前工作目錄與目前窗格的活動程序相同(只要default-path會話選項為空;預設為空)。split-window通過綁定呼叫命令創建的窗格也是如此。

這使用了特定於平台的特殊程式碼,因此目前僅支持某些作業系統:Darwin (OS X)、FreeBSD、Linux、OpenBSD 和 Solaris。

這應該在tmux的下一個版本(1.7?)中可用。


使用tmux 1.4,我通常只使用

tmux neww

在已經具有所需目前工作目錄的外殼中。

但是,如果我預計需要使用相同的目前工作目錄創建許多視窗(或者我希望能夠使用通常的 <prefix>c鍵綁定來啟動它們),那麼我default-path通過以下方式設置會話選項

tmux set-option default-path "$PWD"

在已經具有所需目前工作目錄的外殼中(儘管您顯然可以從任何目錄執行此操作,而只需指定值)。

如果default-path設置為非空值,則將使用其值,而不是從命令行呼叫“繼承”目前工作目錄tmux neww

tmux常見問題解答有一個標題為“如何在與目前視窗相同的目錄中打開新視窗?”的條目。描述另一種方法;這有點令人費解。

目前的 (1.9a) Tmux 手冊頁列出了-c start-directory一些命令的可選參數,包括new-windowand split-window。它還包含格式變數pane_current_path,它指的是 Current path if available.

通過結合這些,我們可以使用目前工作目錄打開一個新視窗,

new-window -c "#{pane_current_path}"

如果目前路徑包含空格,則需要引號。

如果要垂直拆分目前窗格,請使用

split-window -c "#{pane_current_path}"

or 進行水平拆分

split-window -h -c "#{pane_current_path}"

要使鍵綁定預設使用目前工作目錄打開新的拆分和視窗,請將以下內容添加到您的.tmux.conf. 周圍的"引號是告訴 Tmux 它不應該開始一個字元串,而是綁定"鍵。

bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"

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