unix 如何更改tmux会话的起始目录?

62lalag4  于 2022-11-04  发布在  Unix
关注(0)|答案(5)|浏览(205)

启动tmux会话的目录将成为新窗口启动的目录。如何在不关闭tmux会话的情况下更改此启动目录?

bjg7j2ky

bjg7j2ky1#

方法是从会话中分离(使用默认键绑定的^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版(尽管我认为这并不重要--我在更改日志中找不到任何关于向attach-session命令添加-c选项的信息,所以我认为它已经存在了很长一段时间)。

owfi6suc

owfi6suc2#

Chucksmash的答案很好,但是如果您愿意,也可以不使用会话来实现。并且可以使用点将目标会话指定为“当前”会话。

attach-session -t . -c /path/to/new/directory
1tuwyuhd

1tuwyuhd3#

下面介绍了如何在不分离会话、不使用<prefix>击键的情况下更改tmux会话的工作目录:

(选项1)tmux命令提示符下输入目录:

tmux command-prompt "attach -c %1"
...将打开一个命令提示符,然后键入所需的工作目录~/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"

使用这种方法,new-directory的提示符中会预先填充启动命令的窗格的当前目录。当然,如果愿意,您可以用任何其他内容替换$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"
 }

使用所有这些选项,任何未来的新窗口都将在给定的目录中启动。

  • 注:* attachattach-sessiona都是彼此的别名,tmux command-prompt还有很多其他的能力,值得reading the man page
mlnl4t2r

mlnl4t2r4#

在命令提示符下或在绑定中使用attach-session -c
我有绑定来自动使用当前目录,使用提供的pane_current_path var。
我把它绑定到M-c,以更新当前路径。


# tmux.conf

# set default directory for new windows in this session to current directory:

bind M-c attach-session -c "#{pane_current_path}"

类似地,当我只想在当前目录中创建另一个窗口而不改变默认值时,我在C上有一个绑定:


# tmux.conf

# open a new window in the current directory

bind C new-window -c "#{pane_current_path}"

我的绑定:

  • c:在会话默认目录中打开一个新窗口[默认绑定]
  • C:在当前目录中打开一个新窗口
  • M-c:将会话默认目录设置为当前目录

祝您多路复用愉快!

vd8tlhqk

vd8tlhqk5#

可以从命令行更改默认工作目录,如下所示:

TMUX= tmux -C attach -c directory -t session </dev/null >/dev/null

例如,与command-prompt相比,command-prompt的优点是不会产生交互提示或确认,因此可以在脚本中运行。取消设置TMUX允许从会话内部连接,选项-C打开非交互使用的控制模式,从/dev/null重定向会导致客户端立即断开连接。同时仍在更新默认目录。重定向输出不是必需的,但它会隐藏消息。

相关问题