1

我刚刚在我的 .vimrc 中创建了一个新映射,以便在新窗口中快速打开我正在使用的存储库的差异。

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""                                                
" 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 autocmd 保存文件,因为我不想在每次查看差异时手动写入文件。但我宁愿让 Vim 不警告我。

那么有没有办法在 Vim 中打开一个缓冲区,当它有未保存的内容时它是否关闭?如果我不必打开特定文件而不是匿名缓冲区,我也会喜欢它。

我宁愿不使用自动写入。

(我只是 Vim/Vimscript 的初学者,所以如果我应该为此编写一个函数,请告诉我)

4

1 回答 1

5

我在这样的缓冲区中有这个:

setlocal buftype=nofile noswapfile bufhidden=delete

例如,我git 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
于 2012-07-19T09:46:42.077 回答