假设我的5个打开的标签页是:
file1 file2 file2 file2 file3
当焦点在任何一个 file2
标签页上时,我希望有一种快速关闭所有重复的 file2
标签页的方法。
因此,在运行命令后,应该得到以下结果:
file1 file2 file3
命令在焦点位于
file1
或file3
时不应产生任何影响,因为它们没有重复的标签页。你有什么想法可以实现这一点吗?
编辑 - 根据Ingo的建议解决方案:
function! s:CloseDupTabs()
let curBufnr = bufnr('')
let numTabs = tabpagenr('$')
" Run for 1 lesser than numTabs so that we don't visit current tab in loop
for i in range(numTabs - 1)
execute 'tabnext'
if curBufnr == bufnr('')
" Check edge case to see if we're already on last tab before doing tabprev
if tabpagenr() != tabpagenr('$')
close
execute 'tabprev'
else
close
endif
endif
endfor
execute 'tabnext'
endfunction