目前我在dvtm
终端vim
内运行,在dvtm
. 当我按Ctrl+z打算暂停时vim
,却被暂停dvtm
了。我没有这个问题screen
or tmux
,所以我认为它一定是dvtm
做错了什么(或做错了什么)。我该如何解决?
更新:我错了,这不是dvtm
. 事实上,我在使用dtach
+dvtm
组合并错误地认为 dvtm 有问题。问题真的出在dtach
.
更新(新答案):
dtach
有一个-z
选项,描述为“禁用挂起键的处理”。如果你问我的话会令人困惑,但它的效果似乎Ctrl+Z是传递给 Vim 而不是被dtach
.
更一般的答案:一个程序喜欢dtach
或dvtm
几乎可以绝对控制传递给它“内部”运行的任何内容。这就像让秘书听写一样——你可以说出你喜欢的话,但秘书控制着纸上实际出现的内容。所以如果你想让终端程序接收到Ctrl+Z,你必须让所有中间层进行合作,无论是通过命令行选项还是源代码编辑。
在我看来,这是dvtm
. 从源代码的检查来看,它没有捕捉到SIGTSTP
信号,这是当您按下Ctrl+时发送到终端前台应用程序的信号z。由于它没有明确捕获信号,因此它退回到默认行为并被挂起。有什么dvtm
需要做的就是抓住这个信号,并沿着它传递给它的一个窗口。