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