在我的.vimrc:
noremap z w
当我检查映射时,:map z仅显示:
z         * w
当我按下时z,我的光标按预期移动(到下一个单词).然而,当我尝试使用类似diz或者ciz,什么都不会发生.在我的屏幕的底部,di并ci显示为我打字他们,但是当我键入z时,Vim兴高采烈地闲置.diw并ciw预期仍然工作.
我还需要做什么?是否有我不知道的映射模式?
ZyX*_*ZyX 10
问题是iw单个文本对象,它不是修饰符i+运动w.你需要映射iz,az在这种情况下:
onoremap iz iw
onoremap az aw
.请注意,这将等待您z仅按下一段时间(请参阅参考资料:h 'timeoutlen').为了让它像iw(例如,z永远等待)一样工作,你应该尝试以下方法:
function s:MapTOPart(tostart)
    let char=getchar()
    if type(char)==type(0)
        let char=nr2char(char)
    endif
    return a:tostart.((char is# 'z')?('w'):(char))
endfunction
onoremap iz iw
onoremap az aw
onoremap <expr> i <SID>MapTOPart('i')
onoremap <expr> a <SID>MapTOPart('a')
你将不得不对所有做同样i*和a*文本对象,你只用上面的代码,因为使用iz和az正常工作; 由于某种原因,iw必须键入太慢或键入iww.