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

标签 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>'

关于vim - 将键映射到自身和另一个键而不覆盖键的先前映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37895456/

相关文章:

非文件类型时的 vim colorcolumn

vim - 在 Vim 中向左或向右 move 光标时防止打开光标下的折叠

html - 在 vim 中使用 "wysiwyg editors"之类的标记输入

linux - 如何从任何目录运行 cscope?

python - 为什么调用python的标签补全时会弹出tcl和c中的关键字?

php - 在 VIM for PHP 中自动格式化

vim - 两个 vim 窗口但一个实例?

windows - 我需要在我的电脑上手动设置 $VIMRUNTIME

python - 设置 pyflakes 的首选项(在 vim 中使用 python-mode)

ruby - 如何更快地编程,(从模式生成代码?)