Vim在执行C-x C-s序列后无响应

36

我有时使用vim快速编辑文本文件,经常会错误地输入Emacs的C-x C-s序列进行保存操作,此后我的vim会在状态栏中显示^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)并变得无响应。也许有一种方法可以使vim重新响应吗?因为不得不杀掉终端然后重新开始真的很烦人。

2个回答

56
尝试输入^Q^S^Q是tty设置中默认的“停止”和“开始”字符。
(vim应该操作tty设置,以便控制-S不会停止输出,但我见过一些系统无法实现。是的,这很烦人。)

10
这是一个古老的Unix技巧,使用^S可以停止程序输出,使用^Q可以重新开始输出。在那个时代屏幕更新速度缓慢,这种技巧非常有用。可以将其视为极度陈旧版本的lessmore
您可以输入^Q来重新启动程序输出,或通过在~/.bashrc中添加以下内容来关闭此现在几乎无用的机制:
# Are we on a terminal?
if [ -t 0 ];
then
    stty sane
    stty stop ''
    stty start ''
    stty werase ''
fi

我已经将 stopstart 分别设置为 ^S^Q,但在 vim 中仍然可以输入 ^S 而不会停止输出,因此建议的 stty 命令似乎并不必要。但我想我在我的 Debian 6.0.6 工作系统上遇到了类似的问题。我会试着找出区别在哪里。 - Keith Thompson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接