在Vim中,为什么我不能将键重新映射到`w`?
发布时间:2020-12-16 01:07:31 所属栏目:安全 来源:网络整理
导读:在我的. vimrc中: noremap z w 当我检查映射时,:map z仅显示: z * w 当我按z时,我的光标按预期移动(到下一个单词).但是,当我尝试使用像diz或ciz这样的东西时,没有任何反应.在我的屏幕底部,di andci出现在我输入的时候,但是一旦我输入z,Vim就兴高采烈地闲
在我的.
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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |