【问题标题】:Different starting directory per window?每个窗口的起始目录不同?
【发布时间】:2017-07-05 21:37:21
【问题描述】:

我每天在笔记本电脑上使用tmux (2.5) 来工作,我的 tmux 会话有一个起始目录,它是我启动 tmux 会话的工作目录。我打开的每个窗格/窗口都以这个起始目录作为工作目录开始。

我可以change this starting directory,此更改将适用于整个会话。

但是,如果我想处理具有多个窗格的不同项目,我可以启动一个新窗口,但是我将在其中打开的每个窗格都将从会话的起始目录开始:我必须 cd 到新窗口每个窗格的位置不实用。

如果我需要同时处理多个项目/目录,我可以启动一个新的终端会话,然后cd 到相关目录/项目并启动一个新的 tmux 会话。这并不复杂。

但如果我想通过ssh 在服务器上做同样的事情,我需要:

  • 打开一个新的 ssh 会话。
  • 要么将我的远程 tmux 会话嵌入到另一个 tmux 会话中。

对我来说听起来都不实用,我更喜欢远程机器上的单个 tmux 会话。

我认为能够使用自己的起始目录位置启动新窗口会更方便,该起始目录位置适用于在其中打开的任何新窗格。有没有办法做到这一点?

编辑:

我已经试过tmux new-window命令的-c参数了。

但它不会将其起始目录分配给以这种方式创建的窗口,它只会将此自定义起始目录应用于创建的第一个窗格。

在此窗口中打开的任何新窗格都会使用会话的起始目录作为默认工作目录(而不是传递给 tmux new-window 的路径)。

【问题讨论】:

    标签: tmux


    【解决方案1】:

    这个问题很像:https://unix.stackexchange.com/questions/12032/create-new-window-with-current-directory-in-tmux

    这取决于您的 tmux 版本,但 -c 参数确实可以解决问题,但它不记得设置。曾经有一个default-path 设置,但不幸的是在 1.9 版中已删除。

    对于较新的版本,您需要在所有情况下传递-c(如果您手动执行该命令,则可以使用别名)或者如果您使用键绑定,则需要重新绑定拆分/新窗口键。

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

    要使用自定义路径而不是当前窗格路径,请执行以下命令:

    tmux setenv custom_path /home/whatever/some/path
    

    把它放在你的配置中:

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

    【讨论】:

    • 它不会使用当前窗格的工作目录而不是分配给当前窗口的起始目录吗?不过,这可能是一个可以接受的替代方案。
    • @vmonteco 是的,如果您希望维护分配的目录,我认为您需要将其分配给某个环境变量。我仍在尝试(我也想要),但还没有找到可行的解决方案
    • @vmonteco 我已经更新了答案以包含两个选项:)
    • 谢谢,但第二个解决方案不与更改默认起始目录相同吗?
    • @vmonteco 该设置应该是特定于会话的,除非您使用setenv -g 全局设置它,这是参考手册:man.openbsd.org/OpenBSD-current/man1/tmux.1#set-environment
    【解决方案2】:

    是的,事实证明new-window 命令的-c 选项就是您要查找的内容:https://unix.stackexchange.com/questions/12032/create-new-window-with-current-directory-in-tmux 另外,这是:https://unix.stackexchange.com/questions/101949/new-tmux-panes-go-to-the-same-directory-as-the-current-pane-new-tmux-windows-go

    因此,您的 tmux 会话中的 tmux new-window -c $(pwd)tmux new-window -c /path/to/dir 都应该这样做。

    【讨论】:

    • 我已经尝试过了,但是指定的路径只适用于创建的第一个窗格。使用会话的起始目录创建任何新窗格。它不会将自己的起始目录分配给新窗口。
    • 勘误:一种将当前工作目录用于新窗格的方法可以解决问题。我正在考虑这个并研究你链接的参考资料。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    相关资源
    最近更新 更多