我想使用我不需要的快捷方式(,q
)到删除缓冲区,但我想使用相同的快捷方式退出vim 当前缓冲区是列出的唯一缓冲区。
我目前正在使用此功能:
function! MyClose()
" :q if at most one buffer is loaded
" :bdelete otherwise
let bufcount = len(filter(range(1,bufnr('$')), 'buflisted(v:val)==1'))
if bufcount < 2
exe ":q"
else
exe ":bdelete"
endif
endfunction
然后
nnoremap <leader>q :call MyClose()<cr>
但我觉得我做得不对。
答案 0 :(得分:0)
你是对的,你可以使用
:help tabpagebuflist
要获取所有现有缓冲区的列表,请执行
tablist = []
for i in range(tabpagenr('$'))
call extend(tablist, tabpagebuflist(i + 1))
endfor
在这种情况下,您只需要在当前选项卡上检查缓冲区,因为执行:q将关闭选项卡