VIM i为移动命令时映射内字函数

VIM map inner word function when i is move command

我正在学习 vim 并缓慢但肯定地适应我的 vimrc。

我正在使用 "jlim" 移动并使用 k 进入插入模式。 我想做的就是将动作与文本对象结合起来。

但是当我想为我更改内字(应该是c k w)时,我会排成一行而不是更改内字。我检查了 :index 和 :c 和 :iw 但我不明白如何将我的动作映射到内部单词?

vimrc:

`" set move keys in vim
   map m <down>
   map i <up>
   map j <left>
   map l <right>
`

问候

插入 k 时“{action} {text object}”的解决方案:

" set move keys in vim
nnoremap m <down>
nnoremap i <up>
nnoremap j <left>
nnoremap l <right>

" n for normal mode and noremap to not make k map to up
nnoremap k i

如果你只是想将 i 所做的所有事情更改为 k(我不建议这样做,它们是助记符是有原因的),你可以 map它。

话虽这么说,裸 map 有点矫枉过正。 noremap 哪个 won't recursively change your mappings 你会过得更好。您还最好指定希望这些映射使用的模式。如果你必须改变移动键(我也不推荐),我建议

nnoremap m <down>
nnoremap j <left>
nnoremap l <right>
nnoremap i <up>

然后你可以改变你想要k做的事情,只需要另一个nnoremap:

"n for normal mode, noremap for not making your k map to <up>
nnoremap k i

如果我没理解错的话,你正在寻找 :h onoremap 如果你想让 ckw 做 ciw 你需要

:onoremap kw viw

这对于所有类型的支架都是必需的(对于内部和周围运动(ciwcaw))。我不建议这样做。坚持使用默认设置即可。