终端中的^ S不会被发送到Vim


1

如果我碰巧在Vim中编辑某些内容,我想重载Ctrl + S和Cmd + S以保存文件。

在经历了一些^S令人头疼的事后,我想我已经发现在一个终端中可能被外壳捕获,因为它向进程发送信号,或者Vim正在做一些特别的事情来不听它。我有一个perl脚本,将术语置于原始模式,可以很好地读取我的映射(^S发送十六进制0x13),但是当我处于Vim Ctrl+V逐字模式并键入它时没有任何反应。在裸zsh shell中,逐字模式确实向我显示我正在按压^S。这似乎反驳了一个命令,即有一些终端程序流控制绑定到这个键,因为我能够让zsh看到它。

如何让vim识别我的Ctrl + S?

Answers:


2

^S是ASCII XOFF字符。与XON(^Q)一起,它们是用于软件流控制的两个控制信号。

它们不被shell拦截,而是被终端拦截^S,终端拦截意味着停止终端输出并^Q意味着恢复它。

您可以stty -ixon -ixoff通过关闭软件流控制来配置终端(使用)忽略它们,但这可能是徒劳的:尝试将其他功能分配给XON和XOFF是不明智的,因为用户会话中可能还有其他功能(a远程终端,调制解调器,其他一些RS-232设备)解释它们。


1

stty -ixon(并且stty -ixoff为了好的措施)为Terminal.app,iTerm2做了。

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.