启动tmux会话的目录将是新窗口启动的目录。如何在不关闭tmux会话的情况下更改这个启动目录?
发布于 2016-04-05 19:37:18
这样做的方法是从会话(带有默认键绑定的^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
此设置将被持久化--在重置工作目录之后,您将不需要每次重新附加到会话时都指定它。
为了记录在案,我使用的是tmux2.0版本(尽管我认为这并不重要--我无法在更改日志中找到向-c
命令添加attach-session
选项的任何方法,因此我猜想它已经存在了很长一段时间了)。
发布于 2019-01-30 16:12:09
Chucksmash的答案不错,但如果您愿意的话,也可以不使用会话来实现它。命令attach-session
在tmux命令提示符中也可用;可以使用点指定目标会话为“当前”会话。
attach-session -t . -c /path/to/new/directory
发布于 2020-06-17 06:17:36
下面是如何更改tmux会话的工作目录,而不需要分离会话,也不需要使用<prefix>
击键:
(选项1)在tmux
命令提示符下输入目录:
tmux command-prompt "attach -c %1"
...will打开命令提示符,然后键入需要~/my/dir
的工作目录,然后按ENTER
(选项2)在窗格内命令行上提供目录:
# 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"
使用这种方法,使用启动命令的窗格的当前dir预先填充新目录的提示符。当然,如果你愿意的话,你可以用其他任何东西来代替$PWD
。
想要一个shell函数吗?
我在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"
}
有了所有这些选项,未来的任何新窗口都将在给定的dir中启动。
注意:attach
、attach-session
和a
都是彼此的别名。tmux command-prompt
还有很多其他的能力,值得阅读手册页
https://stackoverflow.com/questions/27307815
复制相似问题