加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 21:02:14 所属栏目:安全 来源:网络整理
导读:我正在编写插件,我需要检测用户何时使用n键来获取下一个搜索结果. nmap n n:echo "detected!"CR 不幸的是,这会覆盖用户为n定义的所有映射,例如在跳转到下一个搜索结果后以光标为中心. nmap n nzz 有没有办法将n映射到用户映射到n和我的echo命令的任何内容?
我正在编写插件,我需要检测用户何时使用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>'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读