Hon*_*hen 371 vim man keyboard-shortcuts terminal emacs
我在vimdoc中看到一句话:
Note: CTRL-S does not work on all terminals and might block
further input, use CTRL-Q to get going again.
Run Code Online (Sandbox Code Playgroud)
并使用 CTRL-S 确实挂起我的 vim。我认为这是vims的错误,因为我在emacs nox中使用C-s/时没有问题C-x C-s。但是,刚才,当我阅读手册页并按下 时Ctrl-s,它也挂man了(less是输出寻呼机)。
那么,有人可以告诉我发生了什么吗?
我测试过的终端模拟器是xterm和lxterminal。tty也有这个问题。A Ctrl+q在所有情况下都会取消挂起终端。
h3r*_*ler 425
此功能称为软件流控制(XON/XOFF 流控制)
当数据链路的一端(在这种情况下是终端仿真器)无法接收更多数据(因为缓冲区已满或接近满或用户发送C-s)时,它将发送一个“XOFF”来告诉发送端数据链接暂停,直到收到“XON”信号。
在幕后发生的事情是“XOFF”告诉内核中的 TTY 驱动程序将发送数据的进程置于睡眠状态(如暂停电影),直到 TTY 驱动程序被发送一个“XON”来告诉内核来恢复进程,就好像它从来没有停止过一样。
C-s启用终端滚动锁定。这可以防止您的终端滚动(通过发送“XOFF”信号来暂停软件的输出)。
C-q禁用滚动锁定。恢复终端滚动(通过发送“XON”信号来恢复软件的输出)。
此功能是遗留的(当终端速度非常慢且不允许滚动时)并且默认启用。
要禁用此功能,您需要在~/.bash_profile或 中执行以下操作~/.bashrc:
stty -ixon
Run Code Online (Sandbox Code Playgroud)
Ste*_*and 32
在我的.bashrc脚本末尾,我添加了:
#so as not to be disturbed by Ctrl-S ctrl-Q in terminals:
stty -ixon
Run Code Online (Sandbox Code Playgroud)
编辑:随着时间的推移,我已经从我的配置中删除了这一行,因为我最终发现使用 Ctrl-S 冻结终端输出并使用 Ctrl-Q 恢复它很方便。它不是每天都有用,但很高兴拥有。