在Vim中,为什么我不能将键重新映射到`w`?

前端之家收集整理的这篇文章主要介绍了在Vim中,为什么我不能将键重新映射到`w`?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的. vimrc中:
noremap z w

当我检查映射时,:map z仅显示

z         * w

当我按z时,我的光标按预期移动(到下一个单词).但是,当我尝试使用像diz或ciz这样的东西时,没有任何反应.在我的屏幕底部,di andci出现在我输入的时候,但是一旦我输入z,Vim就兴高采烈地闲着. diw和ciw仍然按预期工作.

我还需要做什么?是否有我不知道的映射模式?

问题是,iw是单个文本对象,它不是修饰符i motion 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 *和* *文本对象执行相同的操作,因为上面的代码只有iz和az工作正常;由于某种原因,我必须输入太慢或键入为iww.

原文链接:https://www.f2er.com/bash/384663.html

猜你在找的Bash相关文章