2016-06-18 99 views
4

我正在編寫一個插件,並且我需要檢測用戶何時使用n密鑰才能到達下一個搜索結果。將密鑰映射到自身和另一個密鑰,而不覆蓋密鑰的先前映射

nmap n n:echo "detected!"<CR> 

不幸的是這將覆蓋用戶對n定義的所有映射,例如跳到下一個搜索結果後光標爲中心。

nmap n nzz 

有沒有一種方法來映射n到任何用戶映射到n和我echo命令?在這個例子中,結果應該等於:

nmap n nzz:echo "detected"<CR> 
+2

':幫助maparg()',特別是最後段。 – melpomene

回答

3

由於墨爾波墨涅寫道,你可以採取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>'