我正在编写一个插件,我需要检测用户何时使用 n
键进入下一个搜索结果。
nmap n n:echo "detected!"<CR>
不幸的是,这会覆盖用户为
n
定义的所有映射。 ,例如在跳转到下一个搜索结果后以光标为中心。nmap n nzz
有没有办法映射
n
到用户映射到的任何内容 n
和我的 echo
命令?在这个例子中,结果应该等于:nmap n nzz:echo "detected"<CR>
最佳答案
正如melpomene 所写,您可以从maparg()
获利。函数,例如:
function! AppendMap(name, mode, rhs)
let l:oldrhs = maparg(a:name, a:mode)
exe printf('%smap %s %s', a:mode, a:name, l:oldrhs.a:rhs)
endf
call AppendMap('n', 'n', ':echo "detected"<CR>')
" If key 'n' was mapped to 'nzz', then it is now mapped to 'nzz:echo "detected"<CR>'
关于vim - 将键映射到自身和另一个键而不覆盖键的先前映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37895456/