启动tmux会话的目录将是所有新窗口将从其开始的目录。
我的问题是,如何在不关闭会话的情况下更改此起始目录?
答案 0 :(得分:25)
执行此操作的方法是从会话中分离(^b d
使用默认的键绑定),然后在重新连接时指定其他目录。附加到会话时,使用-c
标志指定工作目录。这是一个例子:
$ tmux list-sessions
tmuxwtfbbq: 3 windows (created Tue Apr 5 14:25:48 2016) [190x49]
$ tmux attach-session -t tmuxwtfbbq -c /home/chuck/new_default_directory
此设置将保留 - 重置工作目录后,每次重新连接到会话时都不需要继续指定它。
为了记录,我正在使用tmux 2.0版(虽然我觉得不重要 - 我找不到任何关于在更改中向-c
命令添加attach-session
选项的信息记录所以我认为它已经存在了很长一段时间。)
答案 1 :(得分:6)
Chucksmash的答案很好,但是如果您愿意的话,也可以不使用会话就可以实现。命令attach-session
也可以在tmux命令提示符下找到;并且可以使用点将目标会话指定为“当前”会话。
attach-session -t . -c /path/to/new/directory
答案 2 :(得分:5)
在这里,您无需更改会话即可更改tmux会话的工作目录,而无需使用<prefix>
击键:
tmux
命令提示符下输入目录: tmux command-prompt "attach -c %1"
...将打开命令提示符,然后键入所需的工作目录~/my/dir
,然后按ENTER
# Execute this in one of the shell panes of within your tmux session:
tmux command-prompt -I $PWD -P "New session dir:" "attach -c %1"
使用这种方法,将使用启动命令的窗格的当前目录预填充new目录的提示。当然,您可以根据需要用其他任何东西代替$PWD
。
我已将其添加到我的shell初始化中:
# Change the current directory for a tmux session, which determines
# the starting dir for new windows/panes:
function tmux-cwd {
tmux command-prompt -I $PWD -P "New session dir:" "attach -c %1"
}
使用所有这些选项,以后任何新窗口都将在给定目录中启动。
注意: attach
,attach-session
和a
都是彼此的别名。 tmux command-prompt
还有许多其他功能,值得reading the man page