默认情况下,VIM 的:e
命令将使用指定的文件创建一个新的缓冲区,而当前缓冲区则会继续存在。这会导致缓冲区数量变得非常大(如果使用某些缓冲区显示插件,例如流行的minibufexplorer
,那么这并不方便)。 是否可能修改 VIM 以便 :e
命令将重用当前缓冲区?毕竟,如果我需要两个缓冲区,我总是可以通过:enew
命令来创建第二个缓冲区。
默认情况下,VIM 的:e
命令将使用指定的文件创建一个新的缓冲区,而当前缓冲区则会继续存在。这会导致缓冲区数量变得非常大(如果使用某些缓冲区显示插件,例如流行的minibufexplorer
,那么这并不方便)。 是否可能修改 VIM 以便 :e
命令将重用当前缓冲区?毕竟,如果我需要两个缓冲区,我总是可以通过:enew
命令来创建第二个缓冲区。
你不能“重新使用”一个缓冲区,在vim中,缓冲区是加载到内存中进行编辑的文件。
您可以删除当前缓冲区然后打开一个新缓冲区,这样就可以保留您的缓冲区计数:
:bd!|e /path/file
请注意,使用 !
将会放弃对当前缓冲区所做的更改。
:bd!|e file
使用最直观的方法,但是如果您有分屏,这将会关闭您的窗口。因此...
function! ReplaceBuffer(bang, newfile)
let curbuf = bufnr('%')
exec "e " . a:newfile
exec "bd" . a:bang . " " . curbuf
endfunction
command! -nargs=1 -complete=file -bang -bar BDE call ReplaceBuffer('<bang>', <f-args>)
那么你可以这样做
:BDE ~/.vimrc
或者
:BDE! ~/.vimrc
加载你的.vimrc
并关闭当前缓冲区,而不影响窗口。
:bd!|e file
可以关闭所有分屏!我一直在寻找一种能够保留分屏布局的方法。 - jazzyfresh:e thefile | bd#
这个解决方案的优点是它可以保留窗口。
#
是上一个缓冲区):e filepath | bd#
销毁了我的另一个窗口并打开了文件,因此窗口没有被保留。从命令中删除 d#
可以保留窗口。 - Unknow0059