微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Vim:映射在命令行模式下工作的键序列

noremap <C-S> :update<CR>      
vnoremap <C-S> <ESC>:update<CR>
inoremap <C-S> <ESC>:update<CR>

这些是我设置的绑定,通过保存缓冲区让Vim响应Ctrl S.我并没有真正使用它,但这对于断断续续/断开或与其他编辑器交互的时间非常方便,我们偶尔会被迫忍受这些编辑器,并且总是只提供用于提交更改的单个绑定.

无论如何,有时候,例如当Vim处于命令行模式(输入:command或/ search)时按Ctrl S将失败,即使我使用这样的绑定:

noremap! <C-S> <ESC>:update<CR>

它基本上退出命令条目(显然发送命令或搜索,这也是不受欢迎的,即使我绑定< ESC>!)并且无法运行:update.

如果我将Vim保留在命令行模式但仍然使用绑定,我怎样才能使它工作?

解决方法

解决方案是使用Ctrl C强制取消输入的内容.这成功发出以下内容:更新.

cnoremap <C-S> <C-C>:update<CR>

警告:您需要配置终端/ shell设置以确保Ctrl S不发送“XOFF”信号,这会使其暂时停止接受密钥(然后使用Ctrl Q关闭密钥).这是一次性配置,通过在shell或终端客户端上配置可能就足够了.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐