我使用插件" 自助 ",并有"本地到缓冲区映射" d"来删除光标下的缓冲区.
我也使用plugun Surround,并且有全局映射" ds"表示" 删除环绕声 ".
所以,当我d在自助餐窗口按" "时,Vim会在执行映射之前等待一秒钟d." 我知道&timeoutlen,但我不想改变它.因此,我想d在Buffet的窗口中解决" " 关键映射的模糊性,以避免超时以d获得缓冲区.
要解决这个问题,我想在Buffet窗口中取消所有以" d" 开头的映射,但除了Buffet自己的映射之外.我怎样才能做到这一点?
PS我已阅读maparg()和mapcheck(),但他们似乎没有什么,我需要,很遗憾.
看来我自己找到了解决方案:
au BufEnter buflisttempbuffer* nunmap ds
au BufLeave buflisttempbuffer* nmap ds <Plug>Dsurround
Run Code Online (Sandbox Code Playgroud)
我希望有更通用的方法(删除真正从“ d”开始的所有映射),但此时我未能找到它。
即使我找到了如何获取所有这些映射,不幸的是我也做不到unmap <buffer> ds,因为ds这是一个全局映射。不过,我确信我应该能够禁用某些缓冲区的全局映射。Vim 很棒,但并不完美。
嗯,现在对我有用。