Глобировать в vim немного сложно (не считая файлов в файловой системе). Следовательно, наилучшим способом, по-видимому, является преобразование подстановочного знака в регулярное выражение, а затем проверка каждого буфера в списке буферов, чтобы увидеть, соответствует ли он. Примерно так:
" A command to make invocation easier
command! -complete=buffer -nargs=+ BWipe call BWipe(<f-args>)
function! BWipe(...)
let bufnames = []
" Get a list of all the buffers
for bufnumber in range(0, bufnr('$'))
if buflisted(bufnumber)
call add(bufnames, bufname(bufnumber))
endif
endfor
for argument in a:000
" Escape any backslashes, dots or spaces in the argument
let this_argument = escape(argument, '\ .')
" Turn * into .* for a regular expression match
let this_argument = substitute(this_argument, '\*', '.*', '')
" Iterate through the buffers
for buffername in bufnames
" If they match the provided regex and the buffer still exists
" delete the buffer
if match(buffername, this_argument) != -1 && bufexists(buffername)
exe 'bwipe' buffername
endif
endfor
endfor
endfunction
Может использоваться как:
:BWipe *.rej
или
:BWipe *.c *.h