2012-07-19 79 views
0

我剛剛在我的.vimrc中創建了一個新映射,以快速打開我在新窗口中工作的存儲庫的差異。Vim:打開一個我不想寫入的緩衝區

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""             
" Quickly see diff 
" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
" Open /tmp/tmp.diff in a new split 
" delete the entire content 
" read in the diff 
nnoremap <leader>d :vsp /tmp/tmp.diff<CR>ggdG<bar>:r !hg diff<CR> 
" Automatically write the diff when exiting the buffer so we're not asked to 
" save it 
autocmd! BufUnload /tmp/tmp.diff :w<CR> 

正如你可以看到我使用通過BufUnload自動命令退出緩衝區時保存文件,因爲我不希望我每次查看差異時手動寫入。但我寧願讓Vim不要警告我。

那麼有沒有辦法在Vim中打開一個緩衝區,它不關心它是否在未保存內容時關閉?我也喜歡它,如果我不必打開一個特定的文件,而不是一個匿名緩衝區。

我寧可不使用autowrite。

(我只是在VIM/Vimscript中的初學者,所以如果我應該寫一個函數,這個請告訴我)

回答

4

我有這個在這樣的緩衝器:

setlocal buftype=nofile noswapfile bufhidden=delete 

例如,我的熱鍵用於在當前文件上運行git diff(diff輸出保存在這樣的緩衝區中):

function Git_diff(fil) 
    abo new 
    exe '0read ++ff=unix !git diff -- ' . a:fil 
    setlocal noma ro ts=8 tw=0 nowrap syn=diff ft=diff 
    setlocal buftype=nofile noswapfile bufhidden=delete 
    go 
endfunction 
map <f3> :call Git_diff(expand("%"))<CR>gg