Vim/Neovim自定义按键绑定在操作符后失效问题求助
解决Vim操作符与自定义映射结合失效的问题
问题出在你只用了nnoremap,它只在普通模式生效,但当你输入操作符(比如d)后,Vim进入的是操作符等待模式,这时候普通模式的映射不生效,所以d2e里的e还是默认的“跳转到单词末尾”功能,而非你映射的j。
要解决这个问题,需要把动作类的映射同时覆盖三个模式:普通模式(n)、操作符等待模式(o)、可视模式(x)。具体配置修改如下:
" 普通/操作符等待/可视模式下的反向映射 nnoremap j n onoremap j n xnoremap j n nnoremap k e onoremap k e xnoremap k e nnoremap l u onoremap l u xnoremap l u nnoremap h i onoremap h i xnoremap h i " 插入模式退出映射保持不变 inoremap jj <esc> " 普通/操作符等待/可视模式下的正向映射 nnoremap e j onoremap e j xnoremap e j nnoremap u k onoremap u k xnoremap u k nnoremap i l onoremap i l xnoremap i l nnoremap n h onoremap n h xnoremap n h
这样修改后,不管是单独输入2e,还是和操作符结合的d2e、y3u,甚至在可视模式下选中文本时的操作,都能正确触发你定义的映射行为。
内容的提问来源于stack exchange,提问作者ICE
相关产品推荐
相关产品推荐

