如何从一个远程 SSH 打开多个终端选项卡,以便它们在一个终端选项卡中显示为覆盖选项卡?

如何从一个远程 SSH 打开多个终端选项卡,以便它们在一个终端选项卡中显示为覆盖选项卡?

其他用户也提出过类似的问题这里(0 个答案)和这里. 两者都建议使用屏幕。但我在寻找一些不同的东西。我正在寻找可以安装在远程机器上的东西,它允许我在一个 bash shell 中模拟多个选项卡(包括 UI),就像我打开了多个选项卡一样。

一个替代方案是更改我正在使用的机器的 bashrc,这样每当我在此打开新选项卡时它都会自动登录到远程。但是,这只在我仅访问一台远程机器时才有效。

答案1

使用tmux

Tmux 是 GNU screen 的替代品,所以这个答案几乎就像“使用screen”。但是 tmux 窗口在默认状态行中几乎像选项卡一样出现。启用鼠标支持后,您只需单击即可切换到另一个窗口;或者当光标悬停在状态行上时使用鼠标滚轮。

截屏

屏幕截图来自 PuTTY,因为我目前使用的是 Windows。在 Linux 中,我的体验甚至更好:

  1. 我运行提供标签的终端模拟器。
  2. 我将第一个标签保留在本地。
  3. 在附加选项卡中,我ssh将其添加到各种服务器。这样,每台机器都有一个选项卡。
  4. 在我运行的每台机器上tmux,Tmux 窗口就像是相应终端仿真器选项卡中的附加选项卡层。
  5. 此外,tmux 还提供窗格(上面的屏幕截图中有两个窗格,均以交互方式运行bash)。如果您习惯每个选项卡只有一个 shell,并且想要保持这种方式,那么就不要将 tmux 窗口拆分为多个窗格。对我来说,窗格比 tmux 中的窗口更有用。

作为副作用,我能够断开与 SSH 服务器的连接而不会中断任何操作;并且能够从同一台或另一台计算机连接,继续我的工作,就像什么都没发生一样(ssh再次,然后)。我在你的问题的上下文中称之为“副作用”,但此功能通常是人们使用/ 的tmux a主要原因。tmuxscreen


tmux实用提示,因此您可以在远程机器上安装并运行后立即测试我的解决方案:

  • 将其放置在您的位置~/.tmux.conf以启用鼠标支持:

    set -g mouse on
    

    tmux要明确的是:该文件应该存在于即将运行的远程端。本地tmux.conf仅与本地调用的有关tmux

  • tmux在客户端-服务器架构中运行(注意:客户端通常与它们通信的服务器在同一台机器上运行,这与网络无关)。服务器启动时会读取上述文件。如果您需要为已经运行的服务器启用鼠标支持,请从 shell 调用此命令:

    tmux set -g mouse on
    
  • 要在 tmux 中创建新窗口,请按以下序列:prefixc.默认情况下
    prefixCtrl+ b,因此整个序列是

    Ctrl+ b(释放两者)c

  • 要销毁窗口,请退出其所有窗格。如果窗口中只有一个 shell,则只需退出该 shell;与实际选项卡非常相似。

    (有一个选项可以使窗格在相应进程退出后继续存在,因此窗口也继续存在;但这不是默认行为。)

  • 要不使用鼠标进入下一个窗口,请按prefixn

    交互式选择:prefixs...Enter还有其他有用的按键。

  • 也许您更喜欢顶部的标签(它们的栏)。如果是这样,您可能也希望 tmux 在顶部显示状态栏。将其放置在~/.tmux.conf

    set -g status-position top
    
  • 您可以自定义状态行,使其看起来更像带有标签的栏。示例:

    # persistent option in tmux.conf
    set-window-option -g window-status-current-format '\#I:#W#F/'
    

    # or ad-hoc in a shell
    tmux set-window-option -g window-status-current-format '\#I:#W#F/'
    

相关内容