与 tty 配置相关的 gnome-terminal 问题

与 tty 配置相关的 gnome-terminal 问题

我遇到了一个奇怪的问题,我将添加一张照片,因为这样可以更好地解释发生的情况

gnome 终端中的 tty 问题

如你看到的。使用git log并退出后(按 q 或 Q 或 :q 或 ^C),我无法使用更多命令。

经过一番谷歌搜索后,我找到了这个stty sane命令,它似乎修复了我的终端。但我不能告诉为什么或者如何它能修复 gnome 终端吗?

据我所见,修复之前和之后stty -a显示相同的输出。

关于如何开始调试有什么想法或建议吗?

我正在使用 GNOME 3.22.2 的 gnome 终端,使用来自 VTE +GNUTLS 的版本 0.46.2

编辑:

感谢您的回答,我再次查看了这两种配置,我可以看到这些差异

chris@Gentoo ~ $ diff stty-bad stty-good 
4c4
< werase = ^W; lnext = <undef>; discard = ^O; min = 1; time = 0;
---
> werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
6c6
< -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl 
ixon -ixoff
---
> -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl 
ixon -ixoff
9c9
< isig -icanon iexten -echo echoe echok -echonl -noflsh -xcase -
tostop -echoprt
---
> isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop 
-echoprt

这仍然是一个很长的列表需要检查,我会从这些选项中尽可能多地阅读,但这留下了答案......如何确实stty sane解决了问题并且什么造成它,因为git log这不是真正的问题。我尝试过git --no-pager log,一段时间后打印提交,我按 ^C ,同样的情况发生......

编辑2:

好吧,切换每个选项后,根似乎是-echo变量。但这只剩下一个问题了。为什么执行git log^C更改默认echo变量。在哪里我能找到根源吗?是吉特吗? less(git log 的分页器)?或者 gnome 终端?甚至是 stty?

答案1

也就是说,git log没有正确清理...等待单个按键(例如 vi、less)的应用程序会将终端置于抑制回声、消除特殊控制字符等的模式,只是为了使其简单。但如果他们不清理,终端将无法使用。

stty sane命令只是将终端模式设置为预定值。如果您的编辑字符不起作用,则可以修复它(除了某些stty sane将擦除字符设置为@等的 Unix 平台)。我使用脚本来比较stty输出,但它并不短......

你的照片至少有一处不同(我明白了-icanon,这足以干扰行编辑)。作为参考,这是我之后看到的stty sane

$ stty -a
speed 38400 baud; rows 40; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

为了以防万一,你可能想仔细看看。

相关内容