我正在编写插件,我需要检测用户何时使用n
键来获取下一个搜索结果。
nmap n n:echo "detected!"<CR>
不幸的是,这会覆盖用户为n
定义的所有映射,例如在跳转到下一个搜索结果后以光标为中心。
nmap n nzz
有没有办法将n
映射到用户映射到n
和echo
命令的任何内容?在此示例中,结果应等于:
nmap n nzz:echo "detected"<CR>
答案 0 :(得分:3)
正如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>'