微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

vim – 将键映射到自身和另一个键,而不覆盖键的先前映射

我正在编写插件,我需要检测用户何时使用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>'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐