Vim-将键映射到执行其他功能的功能以及该键的原始功能

问题描述 投票:0回答:1

目标是让键j执行可能复杂的任务移至下一行(后一动作的执行与j键的原始功能相同)。] >

我最初的尝试是这样映射j

键:
nn j :<C-U>execute "call MyFun(" . v:count . ")"<CR>

((如您所见,我打算使j

的行为取决于其前面的计数)并适当定义功能MyFun
fu! MyFun(count)
  " do more stuff based on a:count
  normal j
endf

这是有缺陷的,因为点击j

现在会导致错误E169: Command too recursive,因为只要我的推论正确,nnoremap的非递归性就适用于[ C0]的映射,而不是映射到其“内部”的任何内容(换句话说,{rhs}主体在调用j时就使用了它的含义,从而导致无限递归)。 >

因此,我尝试了以下操作

function

但是这意味着我浪费了键

。我知道我可以避免这样做的浪费
nn , j
nn j :<C-U>execute "call MyFun(" . v:count . ")"<CR>
fu! MyFun(count)
  " do more stuff based on a:count
  normal ,
endf

但是后来我不知道如何使用nn <Plug>Nobody j (我的理解是,实际上,它仅在另一个非<Plug>Nobody映射的{rhs}中使用)。

目标是让键j进行可能复杂的任务并移至下一行(后一动作的执行与j键的原始功能相同)。我最初的尝试是映射j ...

recursion vim keymapping
1个回答
2
投票

我最初的尝试是以这种方式映射j键

© www.soinside.com 2019 - 2024. All rights reserved.