如何从 tmux 中更改默认的新窗口目录

lew*_*tan 62 linux gnu-screen tmux

我最近从GNU screen转移到了tmux
我发现它非常相似,但得到了更大的支持(由于neovim 中的转义时间问题,我切换了- 分辨率仅适用于 tmux)。

不幸的是,在 tmux 中我找不到与此类似的命令:

screen -X eval "chdir $(some_dir)"
Run Code Online (Sandbox Code Playgroud)

上面的命令从 GNU 屏幕中更改了新窗口/屏幕/窗格的默认目录,因此当我按下Ctrl+ a(类似于 tmux Ctrl+ b)时,在$(some_dir)目录中打开了新窗口。

tmux 中有类似的东西吗?

答案:
我使用了@Lqueryvg 答案并将其与来自评论的@Vincent Nivoliers 建议相结合,这为我提供了一个新的命令绑定,该命令attach -c "#{pane_current_path}"将我的当前目录设置为默认目录。
谢谢。

Lqu*_*yvg 98

tl;博士

  • Ctrl+b :

  • attach -c desired/directory/path

长答案

  1. 开始tmux如下:

     (cd /aaa/bbb; tmux)
    
    Run Code Online (Sandbox Code Playgroud)

现在,/aaa/bbb无论当前窗格的当前目录如何,您创建的任何新窗口(或窗格)都将从 directory 开始。

  1. 如果要在tmux启动并运行后更改默认目录,请使用attach-sessionwith -c

tmux手册页引用attach-session

    -c will set the session working directory (used for new windows)
    to working-directory.
Run Code Online (Sandbox Code Playgroud)

例如:

  • Ctrl+b :

  • attach -c /ddd/eee

/ddd/eee无论当前窗格的目录如何,新窗口(或窗格)现在都将在 directory 中启动。

  • 第二种选择正是我想要的。我将使用 `attach -c "#{pane_current_path}"` 这将与我在屏幕中使用的相同。谢谢。 (9认同)

nic*_*uro 7

对于那些可能正在寻找比所选答案提供的更多参考的人,StackOverflow 上对此问题有另一个很好的答案:

/sf/ask/1911547081/

它提供了无需离开会话即可完成此操作的方法,对于那些以多会话方式使用 tmux 的人(比如我自己),上面的答案提供了关于attach/如何attach-session工作的更好的上下文。

请参阅两个可用答案以了解它们的不同使用方式。我发现两者都很有帮助/富有洞察力。