我刚刚在.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来保存文件,因为每次查看diff时我都不想手动写入文件。但我宁愿让Vim不要警告我。
那么有没有办法在Vim中打开一个缓冲区,如果它有未保存的内容则不关心它是否已关闭?如果我不必打开特定文件,而不是匿名缓冲区,我也会喜欢它。
我宁愿不使用autowrite。
(我只是Vim / Vimscript的初学者,所以如果我应该写一个函数请告诉我)
答案 0 :(得分: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