J'aimerais :bd
et :bw
pour quitter ma session vim si, après la suppression du tampon actuel, la liste des tampons est vide (c'est-à-dire si, avant d'exécuter la commande :bd
o :bw
Je n'avais que le buffer actuel dans la liste des Buffers). Comment puis-je réaliser cela ? Je suppose que c'est assez facile, mais je n'ai rien trouvé d'utile en cherchant sur Google, et jusqu'à présent je n'ai pas réussi à écrire un fichier autocmd
pour y parvenir.
Réponses
Trop de publicités?Pour vérifier la présence d'un seul tampon, il faut itérer sur tous les tampons potentiels et vérifier s'ils sont toujours répertorié (par exemple en :ls
). La vérification est déclenchée chaque fois qu'un tampon est supprimé :
:autocmd BufDelete * if len(filter(range(1, bufnr('$')), '! empty(bufname(v:val)) && buflisted(v:val)')) == 1 | quit | endif
Christophe Herreman
Points
11844
La solution proposée peut être problématique pour certains plugins. C'est le raccourci qui a fait l'affaire pour moi et il semble plus sûr car il ne repose pas sur les autocmds :
nn q :if ((len(filter(range(1, bufnr('$')), 'buflisted(v:val)')) == 1) && expand('%') == '')<Bar>exe 'q'<Bar>else<Bar>exe 'bd'<Bar>endif<cr>
Il utilise bd
à moins qu'il n'y ait un seul tampon sans nom lorsqu'il utilise quit
au lieu de cela.
Mohammad Obada ALJabban
Points
41