在过去十年中,我通常使用全屏模式的终端仿真器(通常是 xterm),并且经常使用垂直分割。最近的 GNU Screen 提供了使用ctrl- 的垂直分割a |。
1280×720 为典型的 16px 字体(8px 宽)提供 160 列,刚好够用于两个 80 列会话。同样,1440×960 为 18px 字体(9px 宽)提供 160 列。更大的一个:1920×1080 提供 240 列,刚好够用于三个 80 列会话。
但实际上,GNU Screen 会用一个垂直条来分隔会话。该条可以隐藏或作为背景着色,但会占用空间。这样我的控制台就有 79 列,对于日常工作来说只差一列(例如,编码约定要求每行少于 80 列¹;自动生成的电子邮件报告假定为 80 列)。
有没有办法腾出垂直分割条的空间?或者,如果做不到,GNU Screen 的替代品(如 Dvtm / Tmux)是否支持没有分割条空间的垂直分割?可以进行多路复用的 X 终端仿真器也适合这个目的,但这种东西可能不存在。
注 1:尽管 Python 编程语言明确建议 79 列就是为了在第 80 列处进行不可移除的标记,但仍有其他场合可以利用完整的 80 列。
答案1
已知世界中没有任何多路复用器(例如 gnu screen、tmux、dvtm)允许将垂直分割配置为完全无。
dvtm 的现任维护者 Marc André Tanner 非常慷慨地应要求提供了一个补丁,经测试适用于最新的 dvtm-0.10,这使得 dvtm 成为已知世界中唯一可以打补丁实现这一点的多路复用器。Marc 表示,这个补丁不会进入主分支并发布。
diff --git a/tile.c b/tile.c
index 43a7166..b166a56 100644
--- a/tile.c
+++ b/tile.c
@@ -25,9 +25,6 @@ static void tile(void)
ny = way;
nx += mw;
nw = waw - mw;
- mvvline(ny, nx, ACS_VLINE, wah);
- mvaddch(ny, nx, ACS_TTEE);
- nx++, nw--;
}
/* remainder */
if (m == 0 && i + 1 == n) /* no minimized clients */
@@ -40,8 +37,6 @@ static void tile(void)
nh = 1;
ny = way + wah - (n - i);
}
- if (i > 1 && nm > 1)
- mvaddch(ny, nx - 1, ACS_LTEE);
}
resize(c, nx, ny, nw, nh);
if (n > 1 && th != wah)