![如何像在屏幕中一样在 tmux 中循环浏览窗口内的窗格?](https://linux22.com/image/26755/%E5%A6%82%E4%BD%95%E5%83%8F%E5%9C%A8%E5%B1%8F%E5%B9%95%E4%B8%AD%E4%B8%80%E6%A0%B7%E5%9C%A8%20tmux%20%E4%B8%AD%E5%BE%AA%E7%8E%AF%E6%B5%8F%E8%A7%88%E7%AA%97%E5%8F%A3%E5%86%85%E7%9A%84%E7%AA%97%E6%A0%BC%EF%BC%9F.png)
我想将 tmux 窗格移至窗口是同样的问题,但似乎不是。
由于经常使用 GNU screen,我正在寻找 tmux 来做同样的事情。我经常做的事情之一是打开几个不同的窗口,一个在 vim 中打开一些代码,然后打开几个终端窗口来测试代码,有时打开一两个窗口用于各种其他事情。我垂直分割屏幕,通常会将 vim 窗口放在顶部窗格中,然后将其他窗口之一放在底部窗格中。
然后我使用的主要命令是Ctrla在Tab窗格之间旋转和Ctrla在n窗格内的窗口之间旋转。例如,当 vim 在顶部窗格中时,我切换到底部窗格,然后在其他终端之间旋转,执行我需要的任何操作。屏幕始终保持分割状态。
问题是我在 tmux 中找不到与 screen 相当的功能Ctrla。n切换窗口似乎在窗格内不起作用,而是完全跳转。如果屏幕被分割,唯一的两个选项似乎是跳转到某个未分割的窗口,然后分割它,或者对窗格进行子分割。两者都不是我正在寻找的。
有什么建议(除了坚持屏幕之外)?
答案1
我相信您正在寻找的是Ctrlb+( →, ←, ↑, ↓)。这些将允许您在窗格之间移动。
答案2
多路复用器和屏幕有不同的型号,因此没有完全相同的型号。
在屏幕换句话说,拆分可以让您同时显示多个窗口。next
( C-a n
) 通过分割的活动部分旋转窗口;这使您可以在分割的活动区域中旋转“隐藏”窗口。
在多路复用器术语“分割”将一个窗口分成一个或多个窗格。分割窗口的每个部分都是一个单独的窗格,窗格永远不会被隐藏(如果选择了一个窗口(可见),它的所有窗格也是如此),并且一个窗格只能在一个窗口的单个分割中使用(一个窗格可以不能位于多个窗口中,并且不能位于同一窗口的多个分割中)。有一些命令可以在窗口中(或窗口之间)移动窗格,但与next
在窗口中移动窗格的方式不同。屏幕。
您可以使用如下所示的绑定来安排类似的效果:
bind-key C-n swap-pane -s :+.top \; rotate-window -Ut :+
您可能希望将其放入~/.tmux.conf
文件中,但您只需键入/粘贴即可Prefix :将其绑定到当前的服务器实例中。
要使用绑定,请选择“主窗口”,将其拆分,在“主窗口”之后立即创建一个“窗格容器”窗口,然后使用绑定旋转“主窗口”中组中的任何窗格。窗格容器”窗口。
以下是创建设置的方法:
选择一个窗口用作“主窗口”。开始(例如)维姆在里面。
将“主窗口”分成两个窗格。
例如Prefix "(
:split-window
)您可以使用此窗格作为测试窗口(或日志查看器,或其他)。
在主窗口之后立即创建一个新窗口(“窗格容器”)。
例如Prefix c(
:new-window
)重要的是,“主窗口”和“窗格容器”窗口的索引之间没有其他窗口(
+
在绑定命令中使用的窗口说明符中表示“下一个编号较高的窗口”)。将此窗口拆分为多个窗格。要旋转三个窗格,请将此窗口拆分为两个窗格(第三个窗格是“主窗口”中的窗格)。
也许你需要一个外壳git,以及用于运行数据库接口的 shell。将每个窗口放入“窗格容器”窗口中的单独窗格中。
切换回“主窗口”。选择您想要“旋转出”的窗格。
您可以使用Prefix Up// Down/Left在Right窗格之间移动。
调用绑定以将当前窗格与“窗格容器”窗口中的第一个窗格交换,并(“在幕后”)旋转“窗格容器”窗口内的窗格(以便下次运行绑定时,第一个命令与序列中的“下一个”窗格交换)。
Prefix Control- n(绑定使用 Cn,但您可以将其更改为您喜欢的任何内容)。
要向后滚动窗格,您可以使用以下命令:
绑定键 Cp 交换窗格 -s :+.bottom \;旋转窗口-Dt :+
答案3
使用bind -r
,这样您就可以按prefix
顺序按一次,然后再按其他键来定位您的窗格。超时可以通过调整repeat-time
。查看man tmux
bind -r Tab select-pane -t :.+
如果你更喜欢hjkl
,
bind -r h select-pane -L
bind -r j select-pane -D
bind -r k select-pane -U
bind -r l select-pane -R
答案4
ALT
这是一个小conf,允许您使用快捷键或SHIFT
+移动到另一个窗格或窗口arrow
。无需使用前缀键。很舒服!
## NAVIGATION: ############################
# Switch panes
# Usage: "ALT+arrow keys" (without prefix key)
# from https://gist.github.com/spicycode
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# Switch windows
# usage: "SHIFT+arrow" (without prefix key)
bind -n S-Left previous-window
bind -n S-Right next-window
您可能还对以下允许通过鼠标导航窗格的代码感兴趣。 (用法:按键前缀 + m 打开,M 关闭)
## MOUSE CONTROL: #########################
set -g mode-mouse off
set -g mouse-resize-pane off
set -g mouse-select-pane off
set -g mouse-select-window off
# Toggle mouse on
bind m \
set -g mode-mouse on \;\
set -g mouse-resize-pane on \;\
set -g mouse-select-pane on \;\
set -g mouse-select-window on \;\
display 'Mouse: ON'
# Toggle mouse off
bind M \
set -g mode-mouse off \;\
set -g mouse-resize-pane off \;\
set -g mouse-select-pane off \;\
set -g mouse-select-window off \;\
display 'Mouse: OFF'
此配置已在 Tmux 1.6 至 1.9 上进行了测试。