ฉันก็ต้องการฟังก์ชั่นนี้ตลอดเวลา นี่คือวิธีแก้ปัญหาที่ฉันมีใน 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>
เพิ่มการแข่งขันทั้งหมดในครั้งเดียว