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

时间:2013-07-15 21:01:38

标签: vim

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

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

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

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

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

如果我将Vim置于命令行模式但仍然使用bind?

,我怎样才能使它工作

1 个答案:

答案 0 :(得分:5)

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

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

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

相关问题