Renuméroter la liste des tampons

29

Après avoir travaillé sur un projet pendant un certain temps, je commence à voir de grands écarts entre les nombres de tampons consécutifs. Cela est dû au fait que les tampons entre eux ont été effacés pour diverses raisons. Malheureusement, cela peut rendre difficile de passer à un tampon particulier ou de sélectionner une plage de tampons après avoir tapé :ls. Existe-t-il un moyen de renuméroter tous les tampons ouverts, en commençant par un, sans rouvrir tous les fichiers?

pointeur vide
la source

Réponses:

21

Non (pas sans supprimer les tampons).

Vim ne prend pas en charge l'attribution manuelle de numéros de tampon ou le réordonnancement des tampons une fois que vous les avez ouverts. Sa philosophie est que chaque tampon obtient un identifiant qui est fixé pour la durée de vie de ce tampon (dans l'aide pour :ls, il note que "chaque tampon a un numéro unique. Ce nombre ne changera pas ...").

Vous pouvez cependant utiliser la liste des arguments. Mettez tous les tampons ouverts dans la liste des arguments, supprimez tous les tampons en attente, puis ouvrez tout dans la liste des arguments. Les commandes suivantes accompliront cela:

  • :argdel * (supprimer la liste d'arguments existante)
  • :bufdo argadd % (pour chaque tampon, ajoutez le chemin du tampon à la liste)
  • :1,1000bd (supprimez les tampons 1 à 1000; il existe probablement une meilleure façon de procéder)
  • :argdo e (pour chaque argument, modifiez cet argument)

Cela vous laissera un tampon supplémentaire vide que vim ouvre lorsque vous supprimez tous les tampons précédents, mais c'est une approximation raisonnable de la fonctionnalité que vous souhaitez. Vous pouvez juste :bdce tampon supplémentaire.


la source
1
Votre réponse dit non, mais il semble que cela fonctionne très bien!
aharris88
(Je voulais dire "non" dans le sens où vous ne pouvez pas le faire sans rouvrir les fichiers). Est-ce que cela renumérote réellement à partir de 1 pour vous? Je pensais que c'était le cas lorsque je l'ai essayé pour la première fois, mais maintenant je vois qu'il ne renumérote pas pour moi?
Ouais, ça renumérote pour moi.
aharris88
Ouais, je suis juste stupide, j'ai trouvé mon erreur.
"chaque tampon obtient un identifiant qui est fixé pour la durée de vie de ce tampon" en fait la session!
14

"les nombres tampons deviennent fous" Parlez-moi! À la fin de la journée, je suis plus de 100 tampons. Mais heureusement, comme vous pouvez le voir dans cette animation, vous avez tabterminé pour les noms de tampons.

Hit: b se <Tab>

Ainsi, même si vous ne pouvez pas renuméroter les tampons, vous pouvez toujours sauter facilement.

Je ne sais pas si c'est clair à partir de l'animation mais, la "complétion de tabulation" est différente de la complétion de tabulation en ligne de commande. Cela ressemble plus à un "remplaçant d'onglet de résolution d'ambiguïté". Cela signifie que sur la ligne de commande, j'aurais dû taper à ce sctabmoment- setablà, mais ici vim effectue une recherche «se» et la remplace par la première (et unique) correspondance. Si j'avais tapé, testtabcela aurait correspondu à 'generate_test_data.py', puis tabaurait à nouveau correspondu à 'scripts / setup_test_data.sh' et tabaurait recommencé, etc.

Le fait étant que vous pouvez prendre l'habitude de taper simplement :b <minimum amount of unambiguous characters>tabpour accéder au document souhaité. Je pense que c'est encore mieux que de me rappeler "Mes tampons sont 1: foo 2: bar 3: etc", c'est ainsi que je le faisais quand j'étais débutant.

Bruno Bronosky
la source
7

Vous pouvez utiliser vim-airlines. Ce plugin a un comportement qui peut résoudre votre problème:

Voir la ligne 470-479 dans le fichier airlines.txt

Cela ne changera pas les numéros de tampon, mais vous pouvez sélectionner un tampon de gauche à droite par le numéro de ligne dans la tabline. Ceci est mon réglage pour la compagnie aérienne en .vimrc:

"set airline 
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#tab_nr_type = 1 " tab number
let g:airline#extensions#tabline#show_tab_nr = 1
let g:airline#extensions#tabline#formatter = 'default'
let g:airline#extensions#tabline#buffer_nr_show = 1
let g:airline#extensions#tabline#fnametruncate = 16
let g:airline#extensions#tabline#fnamecollapse = 2

let mapleader=","

let g:airline#extensions#tabline#buffer_idx_mode = 1

nmap <leader>1 <Plug>AirlineSelectTab1
nmap <leader>2 <Plug>AirlineSelectTab2
nmap <leader>3 <Plug>AirlineSelectTab3
nmap <leader>4 <Plug>AirlineSelectTab4
nmap <leader>5 <Plug>AirlineSelectTab5
nmap <leader>6 <Plug>AirlineSelectTab6
nmap <leader>7 <Plug>AirlineSelectTab7
nmap <leader>8 <Plug>AirlineSelectTab8
nmap <leader>9 <Plug>AirlineSelectTab9

Ma ligne de tabulation: Ma ligne de tabulation

HJIahu
la source
incroyable! Je l'aime :)
Blasco
Pas la réponse à la question, mais cela corrige le problème avec les numéros de tampon fous. Juste une recommandation pour afficher uniquement les tampons: switch_buffers_and_tabs=1etbuffer_idx_mode=0
caligari
6

Selon la documentation, les nombres de tampons ne changent jamais

    Each buffer has a unique number.  That number will not change,
    so you can always go to a specific buffer with ":buffer N" or
    "N CTRL-^", where N is the buffer number.

La seule façon de penser à renuméroter les tampons est de redémarrer vim.

aharris88
la source
0

Vieille question, mais comme cela apparaît en haut de la recherche Google, je vais laisser cela ici pour les recherches futures. Comme l'a suggéré Bruno, un chercheur flou qui prend en charge les listes de tampons est le chemin à parcourir. J'utilise et recommande personnellement fzf-vim . Il fournit la commande :FZFBuffers, qui ressemble à ceci:

entrez la description de l'image ici

Les numéros de tampons sont affichés à gauche au cas où vous en auriez besoin, mais avec un viseur flou, vous n'aurez peut-être plus jamais besoin de les réutiliser. Rappelez-vous simplement une partie du nom de fichier, et c'est généralement 2-5 touches. Personnellement, j'ai mappé cette commande à une frappe et le basculement entre les tampons est presque instantané pour moi!

verboze
la source