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