2010-02-10 5 views
15

Je pensais que vim était tout puissant jusqu'à ce que je veuille me débarrasser des tampons dans la liste et les réutiliser pour autre chose. Par exemple, si jeComment puis-je réaffecter un numéro de tampon dans VIM?

 
1 "f1.h" 
2 "f2.h" 
3 "f3.h" 
4 "f1.cpp" 
5 "f2.cpp" 
6 "f3.cpp" 

et je veux remplacer f1.h - f3.h avec quelque chose d'autre, mais dans la même séquence tampon:

 
1 "n1.h" 
2 "n2.h" 
3 "n3.h" 
4 "f1.cpp" 
5 "f2.cpp" 
6 "f3.cpp" 

Je ne peux pas comprendre comment pour le faire. Je peux faire "1.3bd" et supprimer les tampons 1-3, ou même "1.3bw" et les effacer, mais ne vois aucun moyen de réutiliser ces nombres sans redémarrer vim. La faq du tampon vim au http://vim.wikia.com/wiki/Vim_buffer_FAQ semble confirmer cela.

Mais je ne veux pas croire que vim a vraiment cette limitation, est-ce qu'il n'y a vraiment aucun moyen de le faire depuis vim?

Répondre

6

Vous ne pouvez pas réaffecter des numéros de tampon dans la même session. Votre meilleur pari est de regarder autour des alternatives de vimscript.

Un explorateur de tampon qui gère le tri vers les fichiers les plus récents (et peut supprimer des tampons) est Buffer Explorer/Browser.

Sur vim.org, il existe de nombreux autres scripts de commutation de tampons qui répondent aux besoins de leurs auteurs. Ou alternativement vous pouvez rouler le vôtre avec quelques correspondances.

Je suis arrivé avec ceci pour Django.

http://code.djangoproject.com/wiki/UsingVimWithDjango#Mappings

Il me donne rapidement deux/trois accès à 20 touches standards fichiers nommés par rapport à un répertoire d'application. Vous pourriez trouver quelque chose pour votre projet sur ces lignes.

Mes mappings sont \1, \2, \3 etc ainsi le paradigme de nombre est toujours là.

J'ai aussi mis en correspondance \vr pour ~/.vimrc et \br pour ~/.bashrc.

L'important c'est que ce soit un processus très efficace.

+0

Votre script de mappage \ 1, \ 2, \ 3 indique le chemin vers la réponse que je cherche et si je ne vois rien de mieux, je l'accepte. Si cette approche était systématiquement étendue pour créer des mappages pour tous les fichiers dans le tampon, dans une séquence souhaitée, cela serait une alternative acceptable au basculement vers n'importe quel fichier par numéro de tampon, en particulier s'il est associé à un script répertoriant les fichiers dans la même séquence numérique mappée. –

1

Je recommande d'utiliser des onglets à la place (de vim 7). Vous pouvez les déplacer librement avec tabm et en ouvrir de nouveaux avec tabe ou tabnew. De plus, c'est plus évident ce qui se passe. Vous pouvez également démarrer vim avec un groupe d'onglets ouverts en utilisant -p (IIRC).

+1

Merci pour la suggestion, mais une raison pour laquelle je préfère les numéros de tampons aux onglets est que je travaille souvent avec des dizaines ou des centaines de fichiers à la fois. Dans une session donnée, je commence à mémoriser les fichiers fréquemment utilisés par numéro de mémoire tampon et je les échange rapidement entre eux. Cela ne semble pas aussi facile à faire avec les onglets. Je suppose que c'est aussi la raison pour laquelle vim essaie de maintenir la persistance des numéros de tampons, mais si je dois recharger un bloc de tampons (comme les fichiers include), j'aime les garder en haut. C'est le problème que j'essaie de résoudre. –

2

est ici un moyen paresseux pour le faire (ne nécessite pas d'apprentissage quelque chose de nouveau):

  • Enregistrer votre session dans un fichier dans le répertoire de travail en cours ou où vous voulez travailler:
:mksession Session.vim 
  • Modifier Session.vim. Recherchez la liste des buffers ouverts (lignes commençant par badd).

  • Réorganisez les lignes selon vos préférences.

  • Fermez vim.

  • Lancement vim en utilisant le drapeau -S et le fichier de session:

$> gvim -S Session.vim 

Vos tampons sont renumérotés séquentiellement dans l'ordre que vous les mettez.

Questions connexes