2012-02-27 32 views
0

我正在尋找映射:q:bwipeout僅對SVN怪緩衝劑,通過vcscommand.vim:VCSBlame作爲產生的方法,使我的馬達存儲器:q在我想要消除那些短暫的只讀緩衝區時會佔據上風。CMAP:●於:bwipeout爲VCSBlame/VCSAnnotate緩衝器(和其他VCSCommand緩衝器)

緩衝區名字開始SVN\ annotate <filename>,所以我希望這會匹配:

autocmd BufNew SVN\ annotate* cmap q bwipeout 

然而,緩衝區名不符合這種模式。我如何在SVN\ annotate*這樣的緩衝區中進行本地映射?

回答

2

VCSCommand(我推薦)給它的緩衝區特殊的文件類型。對於:VCSBlame,如果您使用Subversion,則使用svnannotate;如果使用Git,則使用gitannotate

從我有限的試驗,這條線不正是你想要什麼:

autocmd FileType svnannotate cmap <buffer> q bwipeout 

我剛纔的情況下添加<buffer>但我認爲你可以放心地將其刪除。

+0

@romani是的,完美的。這正是我想要的,也是可擴展的,看來,'ft = svninfo'謝謝。 – 2012-02-27 23:11:29

+0

對'cmap'非常小心。它可以在任何命令行類型的動作上觸發。例如'/ quick','?quick',以及像'w〜/ quick.txt'這樣的命令的中間。請參閱以下解決方案:http://stackoverflow.com/questions/7513380/vim-change-x-function-to-delete-buffer-instead-of-save-quit/7515418#7515418 – 2012-02-28 14:23:20

2

顯然VCSCommand插件有一個名爲VCSCommandDeleteOnHide的設置,當設置爲非零時,:bdelete將隱藏其上的緩衝區,其中包括:q。注意:這將適用於所有VCSCommand緩衝區。

let g:VCSCommandDeleteOnHide = 1 

如果您確實想擦除緩衝區註釋,您可以改爲執行下列操作。

autocmd FileType svnannotate set bufhidden=wipe 

:h VCSCommandDeleteOnHide 
:h 'bufhidden'