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?
,我怎样才能使它工作答案 0 :(得分:5)
解决方案是使用Ctrl+C
强制取消输入的内容。这成功发出以下:update
。
cnoremap <C-S> <C-C>:update<CR>
警告:您需要配置终端/ shell设置以确保Ctrl + S不发送“XOFF”信号,这会使其暂时停止接受密钥(然后使用Ctrl + Q关闭密钥) )。这是一次性配置,通过在shell或终端客户端上配置可能就足够了。