我正在寻找一种方法,只为:q
和:bwipeout
生成的SVN blame缓冲区映射vcscommand.vim
到:VCSBlame
,以便我的运动记忆为{当我想要消除那些短暂的只读缓冲区时,{1}}就会占用。
缓冲区名称以:q
开头,所以我希望这匹配:
SVN\ annotate <filename>
但是,缓冲区名称与此模式不匹配。如何在autocmd BufNew SVN\ annotate* cmap q bwipeout
等缓冲区本地进行映射?
答案 0 :(得分:2)
VCSCommand(我推荐)给它的缓冲区特殊文件类型。如果您使用Subversion,则:VCSBlame
为svnannotate
;如果您使用Git,则为gitannotate
。
从我的有限试用版中,这一行完全符合您的要求:
autocmd FileType svnannotate cmap <buffer> q bwipeout
我已添加<buffer>
以防万一,但我认为您可以安全删除它。
答案 1 :(得分:2)
显然,VCSCommand插件有一个名为VCSCommandDeleteOnHide
的设置,当设置为非零时,:bdelete
隐藏缓冲区,包括:q
。注意:这将适用于所有VCSCommand缓冲区。
let g:VCSCommandDeleteOnHide = 1
如果你真的只是要擦除注释缓冲区,你可以改为执行以下操作。
autocmd FileType svnannotate set bufhidden=wipe
见
:h VCSCommandDeleteOnHide
:h 'bufhidden'