您可以在Putty中禁用Ctrl-S(XOFF)击键吗?


41

我经常进行ssh-ing操作,然后按Ctrl+ S,这自然会发送一个XOFF,并引起各种问题(更不用说我花了一段时间才能弄清楚发生了什么,然后又花了一段时间才记住我需要按Ctrl+ Q恢复。

我宁愿指示Putty永远不要让我打字XOFF

有任何想法吗?


6
+1指出使用Ctrl + Q可以进行恢复。对我有很大帮助!
Demento

1
+1实际询问如何禁用此行为,因为它完全过时且对我而言毫无用处。网络上的每个人都有记录的CTRL + q技巧,但是没有人记录如何完全解除键的绑定。
安德鲁

1
请记住,这ctrl+q将还原缓存的流。这就是说,如果您先按下ctrl+s然后疯狂地按下它ctrl+c,那么当ctrl+q您按下之前按下的所有内容时,它们就会被播放。
gcb 2013年

的作用是XOFF什么?
Snowcrash

Answers:


35

不知道腻子,但是您可以使用:

stty -ixon

在远程主机上,以禁用START / STOP信号。


谢谢-是否知道这是否会影响控制台?它会改变外壳程序的行为吗?(我对XON / XOFF唯一了解的是它用于串行流控制)。听起来.bash_profile是一个不错的设置。
赛斯

那应该是stty -ixon
2011年

抱歉。更新了我的帖子以修正错字。
巴托斯

1
正如我刚才评论到BlakBat他的回答,这使得^S不发送XOFF,但现在使我进入i-search状态。有什么方法可以我让bash(或PuTTY)丢掉^S吗?更好的是它是否可以对我发出哔哔声和/或闪光; o)
Owen Blacker 2012年

1
我已添加stty -ixon到个人资料脚本。我已经读了大约100篇文章,内容涉及当您无意间按CTRL + s时,您要做的就是CTRL + q再次恢复...但是我根本不希望我的shell拦截CTRL + s / q因为我在vim上使用了它们很多。非常感谢您提供的答案,其他人似乎都没有考虑过。
安德鲁(Andrew)2012年

29

PuTTY解决方案:

  1. 在创建会话之前,请导航至列表中的Connection-> SSH-> TTY。
  2. 在“模式”下拉框中,选择IXON(nb:从0.60版开始,此列表未按字母顺序排列)
  3. “ 0”)作为IXON的值。

屏幕截图

即使您在其顶部打开“ GNU屏幕”,SSH到另一台主机或“ su”到另一位用户,它也可以用作超级按钮

如果您使用的是GNU Bash,则ctrl-S应该允许您现在进行正向搜索历史记录(又名:i-search)

您可以看到“ stty -a | grep -o” .ixon“的输出之间的差异:配置了腻子后,它会输出” -ixon“,而不会显示” ixon“


2
好的,这^S不会发送XOFF,但现在使我进入i-search模式。有什么办法可以让我获得腻子(或bash)只是为了丢弃任何东西^S?更好的是它是否可以对我发出哔哔声和/或闪光; o)
Owen Blacker 2012年

要取消激活某个动作,可以通过绑定'“ \ Cs”'将^ S绑定为空。这使我的PuTTY闪烁,因为未映射操作。
BlakBat 2012年

1
我对腻子0.62感到厌倦,上述设置无济于事。我尝试使用不同的值覆盖XON,XOFF,但没有任何变化。
丹尼斯·C

1
这也适用于使用OpenSSH作为第二嵌套SSH会话,第3(ETC)客户端
菲利普·阿尔瓦雷斯

1
将此答案视为禁用软件流控制的最佳方法。对于控制终端行为,终端仿真器是配置它的最佳位置。在Putty中禁用XON / XOFF流控制意味着,当从远程主机请求伪终端时,SSH服务器将在分配伪终端时接受该设置。参见tools.ietf.org/html/rfc4254#section-6.2
安东尼·G-莫妮卡的正义

5
.bashrc示例:
#
#使用Ctrl-S / Ctrl-Q停止Putty进行XOFF / XON
#消息来源:http://raamdev.com/recovering-from-ctrls-in-putty(Morgy,2008年7月14日)
#
#stty ixany
#stty ixoff -ixon
###如果需要听某些应用程序的Ctrl-S,请改用以下两个:
姿势停止undef
动作启动undef

5

我有相反的问题。主机每隔一段时间会XOFF向PuTTY 发送一个,但从不向PuTTY发送相应的消息XON。在这种情况下,您对PuTTY所做的任何操作(只需重新启动即可)都不会松开。在这种情况下,主机的所有键盘输入都会被阻止,但是主机仍可以将数据发送到PuTTY。

在PuTTY中禁用流控制不起作用。

解决此问题的方法是使用

stty -ixoff

在您的.profile中。这禁止主机发送XON/ XOFF。请注意,选项的名称完全令人困惑。ixon/ -ixon表示在客户端上启用/禁用流控制(表示客户端无法发出流控制),ixoff/ -ixoff表示在主机上启用/禁用流控制(表示主机无法发出流控制)。

顺便说一句,Ctrl- S和XOFF 的ASCII代码是相同的ASCII字符(代码19、0x13)。没有区别 设置会更改该ASCII字符的解释。


噢,天哪,我到处搜索ixon和ixoff的解释。从客户端向主机发送XON / XOFF很有意义。但是,我仍然感到困惑,在什么情况下主机会向客户端发送流控制XON / XOFF?我看到“当输入队列几乎为空/满时”吗?这在现代计算机上是否会发生,例如不连接速度较慢的打印机?但这实际上意味着什么?终端用户界面会怎样?
CMCDragonkai

流控制在两个方向上均起作用。现代计算机总是在做其他一百万件事,并且可以“锁定”关键活动。在此期间,它无法维修串行端口,除非终端关闭,否则串行端口将溢出。因此,主机将XOFF发送到终端,请求它停止发送。一旦压力消除,主机将发送XON。(顺便说一句,计算机串行端口通常只有一个很小的硬件缓冲区,例如16个字节。)即使这是古老的技术,任何非实时设计的东西也会偶尔“挂起”,因此需要进行流控制。
马克·拉卡塔'16

顺便说一句,我发现有些情况下,一个微小的20 MHz微控制器能够使3 GHz主机溢出,反之则不然。那是因为微控制器只做一件事情,并且考虑到实时性而设计,而主机​​却没有。
Mark Lakata '16

4

打开您的.bash_profile并放置:

stty -ixon

该值-xion对我不起作用。您可以看到该人条目:man stty


stty -xion的+1在我的centos上不起作用,但是stty -ixon起作用。
吉超2010年

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.