मुझे भी हर समय इस कार्यक्षमता की आवश्यकता थी। यह समाधान मैं अपने vimrc में है।
function! GetBufferList()
return filter(range(1,bufnr('$')), 'buflisted(v:val)')
endfunction
function! GetMatchingBuffers(pattern)
return filter(GetBufferList(), 'bufname(v:val) =~ a:pattern')
endfunction
function! WipeMatchingBuffers(pattern)
let l:matchList = GetMatchingBuffers(a:pattern)
let l:count = len(l:matchList)
if l:count < 1
echo 'No buffers found matching pattern ' . a:pattern
return
endif
if l:count == 1
let l:suffix = ''
else
let l:suffix = 's'
endif
exec 'bw ' . join(l:matchList, ' ')
echo 'Wiped ' . l:count . ' buffer' . l:suffix . '.'
endfunction
command! -nargs=1 BW call WipeMatchingBuffers('<args>')
अब, मैं बस कर सकते हैं :BW regex
(उदाहरण के लिए :BW \.cpp$
और सभी मेल खाने वाले बफ़र्स को मिटा दें, जो उस पथनाम में उनके पैटर्न से मेल खाते हों।
आप के बजाय हटाना साफ करना चाहते हैं, तो आप निश्चित रूप से जगह ले सकता है exec 'bw ' . join(l:matchList, ' ')
के साथexec 'bd ' . join(l:matchList, ' ')
<tab>
केवल मैचों के माध्यम से साइकिल चलाने की अनुमति देता है, कमांड लाइन पर एकल प्रविष्टि डालते हुए,<C-a>
सभी मैचों को एक साथ जोड़ता है।