Risposte:
Stessa idea della soluzione di Heptite, ma come una fodera. Molte altre cose possono essere fatte in questo modo: ottenere il nome del buffer (grazie alla mappa), cancellare i buffer che corrispondono a un modello , /programming/2974192/how-can-i-pare-down- vims-buffer-list-to-only-include-active-buffers / 2974600 # 2974600n ecc.
echo len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))
Le risposte finora sono troppo confuse. Ecco il modo integrato di vim:
len(getbufinfo({'buflisted':1}))
Come sempre, vedi l'aiuto di vim ( :h getbufinfo()
) per la spiegazione ufficiale.
Per quanto ne so, non esiste un metodo integrato in Vim per eseguire questa operazione, ma è possibile creare una funzione:
function! NrBufs()
let i = bufnr('$')
let j = 0
while i >= 1
if buflisted(i)
let j+=1
endif
let i-=1
endwhile
return j
endfunction
Metti quanto sopra in un file di testo con il suo nome che termina in .vim,: sorgente, quindi puoi fare qualcosa del tipo:
:let buffer_count = NrBufs()
:echo buffer_count
Nota del 21 giugno: se hai una versione recente di Vim a partire dal 2017, la risposta di Gid di seguito è la soluzione ottimale.
Stai forse cercando?
:echo(bufnr('$'))