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

键盘 – Vim:为什么noremap在插入模式下不起作用?

考虑使用箭头键解除绑定

noremap <Left>  <nop>
 noremap <Right> <nop>
 noremap <Up>    <nop>
 noremap <Down>  <nop>

这在普通模式下工作,但它在插入模式下不起作用:仍然可以使用箭头键导航.作为对策,必须包括

inoremap <Left>  <nop>
 inoremap <Right> <nop>
 inoremap <Up>    <nop>
 inoremap <Down>  <nop>

但这对我来说并没有多大意义,因为我假设map和noremap应该适用于所有模式,而前置n / v / x / s / o / i / l / c指定映射仅在该特定模式下工作.是否有一个原因?

解决方法

why there isn’t an all-inclusive modal map,rather than issuing both map and map!

这很容易解释:在插入模式映射中,Vim不会自动切换到正常模式(您可能希望保持插入模式,尽管文本翻译通常通过以下方式完成:iabb,而不是via:imap),因此适用的集合命令完全不同.例如,在正常模式下,Ctrl-U向上滚动,但在插入模式下,它会删除行中输入的字符!

诸如< C-O>之类的前缀.暂时从插入模式切换到正常模式.实际上,通常甚至必须为命令行模式定义不同的前缀,如此示例所示:

noremap <C-Tab> :<C-U>tabnext<CR>
inoremap <C-Tab> <C-O>:tabnext<CR>
cnoremap <C-Tab> <C-C>:tabnext<CR>

因此,在定义映射时,请始终考虑需要哪些模式以及是否需要重新映射(:nmap vs.:noremap,更喜欢后者).

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

相关推荐