如何将终端分成多个“视图”?


264

从中vi,如果发出命令:sp,则屏幕将分为两个“视图”,使您可以从同一终端编辑多个文件。

同样,是否有办法在同一终端中打开多个外壳?

Answers:


350

您可以在screen终端多路复用器中执行此操作。

  • 垂直分割:ctrla然后|
  • 要水平拆分:ctrla然后S(大写的“ s”)。
  • 取消拆分:ctrla然后Q(大写的“ q”)。
  • 从一个切换到另一个: ctrla然后tab

注意:拆分后,需要先进入新区域并通过ctrla进行新的会话,然后c才能使用该区域。

编辑,基本屏幕用法:

  • 新航站楼:ctrla然后c
  • 下一个终端:ctrla然后space
  • 上一个终端:ctrla然后backspace
  • ctrla然后是第N个航站楼[n](适用于n∈{0,1…9})
  • 使用列表在终端之间切换:ctrla然后" (当终端超过10个时有用)
  • 然后发送ctrla到基础终端。ctrlaa

18
Tmux也会这样做,并且许多终端程序具有拆分的视图和选项卡。
肖恩·高夫

3
@AaronNewton ctrl+a然后释放所有内容shift+s(不知道大写锁定,我的被禁用)
shellholic 2011年

4
Ctrl A Shift S拆分屏幕,然后Ctrl A Tab切换到另一个拆分,并Ctrl A c创建一个bash提示。无论如何,启动时是否有这些命令会自动运行,screen因此我们不必一直运行这些命令。
Michael Butler 2012年

2
哪个版本的屏幕可以垂直分割?我安装的版本是4.00.03,与从我检查过的所有镜像中下载的最新版本相同。
布莱恩·范登堡

1
如何使一个垂直窗口比另一个垂直窗口宽?我想要30 | 30 | 40的比例。
mpen

108

尝试tmux(Terminal MUltipleXer):

tmux屏幕截图

而要理解之间的区别sessionwindow以及panetmuxnestings


20
屏幕vs tmux?tmux可能更适合高级用法,并且更现代,但是屏幕无处不在,并且工作正常。
2013年

其他重要的tmux帮助资源包括:介绍配置入门备忘单
not2qubit

1
@ user606723除其他外,Tmux配置实际上是可读的;不像狗滚过键盘。当然,您可以使用类似的包装器byobu(包装两个终端多路复用器),但是Tmux似乎在配置方面比其他方面更胜一筹。几年前就已经很出色了。屏幕需要用于拆分两个方向的补丁,而Tmux可以直接使用它。最后但并非最不重要的一点是,许可证可能是Tmux或Screen的参数,具体取决于您所处的位置。
0xC0000022L

1
截至2019年,@ user606723不再适用。screen相对较新的Fedora 30安装中缺少的版本tmux

64

如评论中所述,除屏幕外,另一个好的终端多路复用器是tmux。您可以参考手册以获取完整的描述和命令参考。一些基本的操作入门:

  • 垂直拆分屏幕:CtrlbShift5
  • 水平分割屏幕:CtrlbShift"
  • 在窗格之间切换:Ctrlbo
  • 关闭当前窗格:Ctrlbx

您可以通过拆分窗格来实现更复杂的布局。您也可以有多个带有窗格的窗口并在它们之间切换。

  • 创建窗口:Ctrlbc
  • 切换到下一个窗口: Ctrlbn
  • 切换到上一个窗口:Ctrlbp
  • 销毁当前窗口:CtrlbShift7

3
请注意,您可以将tmux的前缀更改为比<Cb>更容易访问的前缀。


19

除了在Screen和Tmux上的出色建议之外,如果您正在使用某种窗口管理器,您可能会对Terminator感兴趣,您可以水平或垂直拆分方式,还可以使用制表符等等。以下是来自作者网站的功能列表:

  • 将端子排列在网格中
  • 标签
  • 终端的拖放重新排序
  • 很多键盘快捷键
  • 通过GUI首选项编辑器保存多个布局和配置文件
  • 同时键入任意组终端

看一下项目站点上的屏幕截图。

最重要的是,您可以将Terminator与Screen / Tmux结合使用。


2
请注意,在编辑器的两个窗口之间进行复制粘贴时,使用终结符拆分会不太方便。
gb。

将窗格分组后,您可以一次编辑多个窗格(或一次选择所有窗格),还可以编辑用于窗格切换的快捷方式。我必须ctrl-shift-h/j/k/l在窗格之间移动,并使用ctrl-(shift)-tab在选项卡之间进行切换,它确实很棒。
sjas 2016年

1
好的,我们可以单击它们来专注;但是仍然找不到找到将终端均匀分布在网格中的方法,这只是手工解决的麻烦,我还需要动态添加终端,因此要在均匀分布的网格中更新它们,有什么想法吗?
Aquarius Power

终结器是X-windows程序,而不是tmux和screen这样的命令行程序。OP特别提到了same terminal两次,因此Terminator或tilix(如@sjas所述)不是很好的建议。如果您正在与没有X服务器的远程服务器进行ssh会话,则您甚至将无法运行这些工具。
haridsv

8

Konsole for KDE 具有内置功能

  • Ctrl+ (左/右分割视图

  • Ctrl+ )拆分视图顶部/底部

  • Shift+ Tab将在拆分视图之间循环

  • Shift+ Left Arrow/ Right Arrow将在选项卡/视图之间循环显示当前视图

  • Ctrl+ Shift+ X关闭当前视图


您是否知道在konsole中的拆分视图窗格之间切换的键盘快捷键?
LangeHaare

1
@LangeHaare SHIFT + TAB会在视图窗格中循环显示
chaptuck '18

7

使用终止符

如果使用主流发行版,则应该可以通过您最喜欢的软件包管理器来获得。

它是唯一的终端多路复用器,可以从窗口的窗格中正确进行粘贴粘贴。

更新:这tilix是一种terminator替代方法,几乎​​可以与终结器完全相同(复制粘贴也可以正常工作)。经过评估之后,terminator由于更好的标签处理和更轻松的配置(从我的POV),我仍然坚持使用。


终结器在技术上不是多路复用器:“终端多路复用器是一种软件应用程序,可用于多路复用多个虚拟控制台,从而允许用户访问单个终端窗口或远程终端会话内的多个单独的终端会话。” (来自Wikipedia)
erb

它也不是唯一可以在窗格内正确执行复制粘贴功能的多路复用器,而tmux可以通过适当的配置来做到这一点。
erb

@erb-如果我不希望在单击三次时选择跨越多个端子的完整行,那到底需要配置什么?为什么不是理智的默认设置?
sjas 2016年

1
您可以在tmux中使用copy-mode进行复制,如果您想使用鼠标,则只需要启用鼠标支持,我的配置在这里:github.com/ErikBjare/dotfiles/blob/master/home/。 tmux /…如果您想在复制模式下使用系统剪贴板,请参见:unix.stackexchange.com/questions/131011/…–
erb

2
??为什么不?您可以使其与选择终止符几乎完全相同(如果不完全相同)的方式工作。出于同样的原因,我曾经是终结者用户,完成配置后,我再也没有回过头,现在通过切换到轻量级的终端仿真器可以节省相当多的RAM和其他资源,因为复制是唯一使我烦恼的事情。
erb

4

瓜克 + Byobu

我是Guake的快乐用户,其中内置Byobu,默认情况下会使用tmux可能更好screen)。

三个步骤

  1. 安装它们(在Ubuntu或Debian上不需要PPA,请检查其他发行版

    sudo apt install guake byobu
  2. 将其添加到可用的外壳程序中(正如我在Guake Github问题中告诉我的那样):

    which byobu | sudo tee -a /etc/shells
  3. 在Guake首选项(guake-prefs)上,选择Byobu作为默认解释器: 图片


  1. 可选:取消选中“显示标签栏”,因为您将为此使用Byobu:

    图片

  2. 如果快捷方式不起作用,请尝试禁用可能会干扰的Guake快捷键(在我的情况下是Ctrl+F2垂直分割): 屏幕截图

其他建议

  1. 通过Shift+ F1此出色的截屏视频学习快捷方式。
  2. 通过以下命令了解可用的byobu终端命令 apropos byobu
  3. 要在Midnight Commander上使用fn键,请使用Alt+ Shift+ F12禁用byobu F键。

屏幕截图


2

尝试对GNU屏幕进行垂直分割

该补丁为当前版本的GNU Screen提供了垂直拆分功能。该功能旨在以与屏幕现有的split命令相同的方式起作用,但是要垂直而不是水平地划分区域。两种形式的分割都可以以所需的任何组合/数量/顺序一起使用。相似的东西预计很快就会出现在GNU Screen 4.1中,并且在该邮件列表线程的CVS中已经可用(并且已包含在从4.0.3-10开始的Debian和Ubuntu屏幕软件包中)。另外,最近一个名为ScreenWM的项目专门设计用于与vsplit修补的屏幕配合使用(请签出!)。


更具体地说,立即Ctrl+|screenUbuntu中的拆分。
JonatanÖström'16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.