【问题标题】:toggle between 2 tmux layouts在 2 个 tmux 布局之间切换
【发布时间】:2016-05-29 15:50:11
【问题描述】:

我经常在 tmux 会话中运行 Vim,以便可以在相邻窗格中运行测试。在较小的显示器上,我要么不得不牺牲比我想要的更多的 Vim 屏幕空间,要么让测试窗格太小而无法读取完整的结果(如果一切都通过,这很好,但当出现故障并且我需要查看详细信息)。

然后我的工作流程变成:

  • 在 Vim 中触发测试
  • 切换到测试窗格 (last-pane)
  • 缩放窗格以占据整个窗口 (resize-pane -Z)
  • 阅读结果
  • 恢复原始布局 (resize-pane -Z)
  • 切换回 Vim 窗格 (last-pane)

我想添加一个键绑定,当我在 Vim 窗格中时可以使用它来缩放测试窗格(隐藏 Vim),并且能够在缩放后使用相同的绑定来恢复原始布局,返回给我给维姆。这是我想出的,但我想知道是否有更好的方法可以做到这一点。我必须设置、检查和取消设置环境变量以保存支持使用相同键绑定来回切换的状态。我还没有弄清楚如何使切换状态特定于一个窗口(现在,任何多窗口会话在其所有窗口之间共享状态,所以这不能正常工作)

bind Space if-shell '[ -z "${ALT_PANE_ZOOM+x}" ]' \
                    'select-pane -t :.+; resize-pane -Z; set-environment ALT_PANE_ZOOM 1' \
                    'set-environment -u ALT_PANE_ZOOM; last-pane'

更新: 我找到了一个更简单的解决方案。我可以利用-Fwindow_zoomed_flag 格式变量,而不是依赖于每个窗口的环境变量:

bind Space if-shell -F '#{window_zoomed_flag}' \
                       'last-pane' \
                       'select-pane -t :.+; resize-pane -Z'

【问题讨论】:

    标签: vim tmux


    【解决方案1】:

    在您的 tmux.conf 中,创建一个键绑定:

    1. 保存缩放状态
    2. 切换到最后一个窗格,如果窗格已放大则取消缩放
    3. 根据 #1 中的缩放状态有条件地缩放

    -

    bind key run-shell "tmux setenv zoomed $(tmux display -p '#{window_zoomed_flag}')"\; \
             last-pane\; \
             run-shell "test $(tmux display -p '#{zoomed}') -ne 0 || tmux resize-pane -Z"
    

    请注意,分号命令分隔符上的反斜杠转义是必需的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-12
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多