Question Utiliser les onglets de Vim comme des tampons


J'ai examiné la possibilité d'utiliser des onglets dans Vim (avec :tabe, :tabnew, etc.) en remplacement de ma pratique actuelle d'avoir plusieurs fichiers ouverts dans la même fenêtre dans des tampons cachés.

Je voudrais que chaque fichier distinct que j'ai ouvert soit toujours dans son propre onglet. Cependant, il y a certaines choses qui gênent cela. Comment puis-je résoudre ces problèmes?

  1. Quand des commandes comme gf et ^] sauter à un emplacement dans un autre fichier, le fichier s'ouvre dans un nouveau tampon dans l'onglet en cours. Est-il possible d'avoir toutes ces sortes de commandes ouvrir le fichier dans un nouvel onglet, ou passer à l'onglet existant avec le fichier si elle est déjà ouverte?

  2. Lors de la commutation des tampons, je peux utiliser :b <part of filename><tab> et il complétera les noms des fichiers dans les tampons existants. <part of filename> peut même être le milieu d'un nom de fichier au lieu du début. Y a-t-il un équivalent pour les onglets de commutation?


328
2017-09-19 14:42


origine


Réponses:


Arrête arrête arrête.

Ce n'est pas ainsi que les onglets de Vim sont conçus pour être utilisés. En fait, ils sont mal nommés. Un meilleur nom serait "viewport" ou "layout", car c’est ce qu’est un onglet, c’est une disposition différente des fenêtres de tout de vos tampons existants.

Essayer de battre Vim dans 1 tab == 1 tampon est un exercice dans la futilité. Vim ne sait pas ou se soucie et il ne le respectera pas sur toutes les commandes, en particulier, tout ce qui utilise le tampon de correctif rapide (:make, :grep, et :helpgrep sont ceux qui viennent à l'esprit) seront heureusement ignorer les onglets et il n'y a rien que vous puissiez faire pour arrêter cela.

Au lieu:

  • :set hidden
    Si vous ne disposez pas déjà de cet ensemble, faites-le. Il fait fonctionner vim comme tous les autres éditeurs de fichiers multiples sur la planète. Vous pouvez avoir édité des tampons qui ne sont pas visibles dans une fenêtre quelque part.
  • Utilisation :bn, :bp, :b #, :b name, et ctrl-6 pour basculer entre les tampons. J'aime ctrl-6 moi-même (seul il passe au tampon précédemment utilisé, ou #ctrl-6 passe au numéro de tampon #).
  • Utilisation :ls pour lister les tampons, ou un plugin comme MiniBufExpl ou BufExplorer.

559
2017-09-19 16:44



Un peu tard à la fête ici mais surpris que je n'ai pas vu ce qui suit dans cette liste:

:tab sball - ceci ouvre un nouvel onglet pour chaque tampon ouvert.

:help switchbuf - ceci contrôle le comportement de commutation du tampon, essayez :set switchbuf=usetab,newtab. Cela devrait signifier passer à l'onglet existant si le tampon est ouvert, ou en créer un nouveau si ce n'est pas le cas.


257
2017-08-13 11:36



Vim :help window explique la confusion "tabs vs buffers" plutôt bien.

Un tampon est le texte en mémoire d'un fichier.
   Une fenêtre est une fenêtre    sur un tampon.
  Une page à onglet est une collection de fenêtres.

L'ouverture de plusieurs fichiers est réalisée en vim avec tampons. Dans d'autres éditeurs (par exemple, notepad ++), cela se fait avec des onglets, donc l'onglet de nom dans vim peut être trompeur.

les fenêtres sont dans le but de diviser l'espace de travail et d'afficher plusieurs fichiers (tampons) ensemble sur un écran. Dans d'autres éditeurs, cela peut être réalisé en ouvrant plusieurs fenêtres GUI et en les réorganisant sur le bureau.

Enfin dans cette analogie vim's pages à onglet correspondrait à plusieurs ordinateurs de bureau, c’est-à-dire à des réarrangements différents de Windows.

Comme vim help: tab-page explique qu'une page à onglets peut être utilisée, quand on veut éditer temporairement un fichier, mais ne veut rien changer dans la disposition actuelle des fenêtres et des tampons. Dans un tel cas, une autre page à onglet peut être utilisée uniquement pour éditer ce fichier particulier.

Bien sûr, vous devez vous rappeler que l'affichage du même fichier dans plusieurs pages à onglets ou fenêtres entraînerait l'affichage de la même copie de travail (tampon).


143
2018-01-23 15:05



Contrairement à certaines des autres réponses ici, je dis que vous pouvez utiliser les onglets comme vous le souhaitez. vim a été conçu pour être polyvalent et personnalisable, plutôt que de vous obliger à travailler selon des paramètres prédéfinis. Nous savons tous comment nous, les programmeurs, aimons imposer notre «éthique» à tout le monde, alors cette réalisation est certainement une caractéristique principale.

<C-w>gf est l'équivalent tabulaire des tampons gf commander. <C-PageUp> et <C-PageDown> va basculer entre les onglets. (Dans Byobu, ces deux commandes ne fonctionnent jamais pour moi, mais elles fonctionnent en dehors de Byobu / tmux. gt et gT.) <C-w>T déplacera la fenêtre actuelle vers une nouvelle page à onglet.

Si vous préférez que vim utilise un onglet existant si possible, plutôt que de créer un onglet en double, ajoutez :set switchbuf=usetab dans votre fichier .vimrc. Vous pouvez ajouter newtab à la liste (:set switchbuf=usetab,newtab) pour forcer les commandes QuickFix qui affichent des erreurs de compilation à ouvrir dans des onglets séparés. je préfère split au lieu de cela, qui ouvre les erreurs de compilation dans une fenêtre fractionnée.

Si vous avez le support de la souris activé avec :set mouse=a, vous pouvez interagir avec les onglets en cliquant dessus. Il y a aussi un + bouton par défaut qui va créer un nouvel onglet.

Pour la documentation sur les onglets, tapez :help tab-page en mode normal. (Après cela, vous pouvez vous entraîner à déplacer une fenêtre vers un onglet en utilisant <C-w>T.) Il y a une longue liste de commandes. Certaines des commandes de la fenêtre ont à voir avec les onglets, donc vous pouvez vouloir regarder cette documentation aussi bien :help windows.

Ajout: 2013-12-19

Pour ouvrir plusieurs fichiers dans vim avec chaque fichier dans un onglet distinct, utilisez vim -p file1 file2 .... Si vous êtes comme moi et oubliez toujours d'ajouter -p, vous pouvez l'ajouter à la fin, car vim suit les règles d'analyse de l'option de ligne de commande normale. Vous pouvez également ajouter un mappage d'alias bash vim à vim -p.


48
2017-11-11 05:27



J'ai rencontré le même problème. Je voulais que les onglets fonctionnent comme des tampons et je ne parviens jamais à les obtenir. La solution que j'ai finalement retenue était de faire en sorte que les tampons se comportent comme des onglets!

Découvrez le plugin appelé Mini Buffer ExplorerUne fois installé et configuré, vous serez en mesure de travailler avec les tampons pratiquement de la même manière que les onglets sans perdre aucune fonctionnalité.


15
2017-09-19 15:12



Ceci est une réponse pour ceux qui ne sont pas familiers avec Vim et qui viennent d'autres éditeurs de texte (dans mon cas, Sublime Text).

J'ai lu toutes ces réponses et ce n'était toujours pas clair. Si vous lisez à travers eux assez de choses commencent à avoir un sens, mais cela m'a pris des heures de va-et-vient entre les questions.

La première chose est, comme d'autres l'ont expliqué:

Pages à onglet, sonner beaucoup comme onglets, ils agissent comme des onglets et ressemblent beaucoup à des onglets dans la plupart des autres éditeurs graphiques, mais ils ne le sont pas. Je pense que c'est un mauvais modèle mental qui a été intégré à Vim, ce qui malheureusement masque la puissance supplémentaire que vous avez dans une page à onglet.

La première description que j'ai comprise venait de La réponse de @crenate est qu'ils sont l'équivalent de plusieurs postes de travail. Vu à cet égard, vous avez seulement quelques bureaux ouverts, mais ont beaucoup de fenêtres GUI ouvertes dans chacun d'eux.

Je dirais qu'ils sont similaires aux autres éditeurs / navigateurs:

  1. Groupes d'onglets
  2. Espaces de travail Sublime Text (c'est-à-dire une liste des fichiers ouverts que vous avez dans un projet)

Quand vous les voyez comme ça, vous réalisez leur pouvoir que vous pouvez facilement grouper des ensembles de fichiers (tampons) ensemble, par exemple. vos fichiers CSS, vos fichiers HTML et vos fichiers JS dans différentes pages d’onglet. Ce qui est en fait assez génial.

Autres descriptions que je trouve déroutantes

Viewport

Cela n'a aucun sens pour moi. Une fenêtre qui, bien qu'elle ait un terme défini du dictionnaire, J'ai seulement entendu parler des fenêtres de Vim dans le :help window doc. Viewport n'est pas un terme que j'ai jamais entendu parler des éditeurs comme Sublime Text, Visual Studio, Atom, Notepad ++. En fait, je n'en avais jamais entendu parler jusqu'à ce que je commence à essayer d'utiliser des pages à onglet.

Si vous affichez des pages à onglets comme plusieurs bureaux, le fait de se référer à un bureau comme une seule fenêtre semble étrange.

Espaces de travail

Cela a peut-être plus de sens, le Définition du dictionnaire est:

Une installation de stockage de mémoire pour une utilisation temporaire.

Donc, c'est comme un endroit où vous stockez un groupe de tampons.

Au début, je ne ressemblais pas à Le concept du texte sublime d'un espace de travail qui est une liste de tous les fichiers que vous avez ouverts dans votre projet:

le fichier espace de travail sublime, qui contient des données spécifiques à l'utilisateur, telles que les fichiers ouverts et les modifications apportées à chacun d'eux.

Cependant, en y réfléchissant plus, cela est en fait d'accord. Si vous considérez une page à onglet Vim comme un projet Sublime Text, il semblerait étrange qu'un seul fichier soit ouvert dans chaque projet et continue à basculer entre les projets. Par conséquent, l'utilisation d'une page à onglet pour ouvrir un seul fichier est étrange.

Collection de fenêtres

le :help window fait référence aux pages à onglet de cette manière. De plus, de nombreuses autres réponses utilisent le même concept. Cependant, jusqu'à ce que vous compreniez ce qu'est une fenêtre vim, alors ce n'est pas très utile, comme construire un château sur le sable.

Comme je l'ai mentionné ci-dessus, une fenêtre vim est la même que celle d'une fenêtre et calme parfaitement expliqué dans ce article linux.com:

Une fonctionnalité très utile de Vim est la possibilité de diviser la zone d'affichage entre un ou plusieurs fichiers ou de simplement diviser la fenêtre pour afficher plus facilement deux bits du même fichier. La documentation de Vim fait référence à ceci en tant que fenêtre ou fenêtre, de manière interchangeable.

Vous pouvez déjà être familier avec cette fonctionnalité si vous avez déjà utilisé la fonction d'aide de Vim en utilisant: rubrique d'aide ou en appuyant sur la touche F1. Lorsque vous entrez dans l'aide, Vim divise la fenêtre et ouvre la documentation d'aide dans la fenêtre supérieure, laissant votre document ouvert dans la fenêtre inférieure.

Je trouve étrange qu'une page à onglets soit appelée une collection de fenêtres au lieu d'une collection de tampons. Mais je suppose que vous pouvez avoir deux pages à onglets ouvertes chacune avec plusieurs fenêtres pointant toutes sur le même tampon, du moins c'est ce que je comprends jusqu'à présent.


6
2018-03-30 18:15



Regarder    : onglets d'aide il ne semble pas que vim veuille travailler comme tu le fais ...

Les tampons sont partagés entre les onglets, il ne semble donc pas possible de verrouiller un tampon donné pour apparaître uniquement sur un certain onglet.

C'est une bonne idée, cependant.

Vous pouvez probablement obtenir l'effet que vous souhaitez en utilisant un terminal prenant en charge les onglets, comme multi-gnome-terminal, puis en exécutant des instances vim dans chaque onglet terminal. Pas parfait, cependant ...


4
2017-09-19 14:50