Je l' ai regardé la possibilité d'utiliser des onglets dans vim (avec :tabe
, :tabnew
etc.) en remplacement de ma pratique actuelle d'avoir de 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 empêchent cela. Comment puis-je résoudre ces problèmes:
Lorsque les commandes aiment
gf
et^]
sautent vers un emplacement dans un autre fichier, le fichier s'ouvre dans un nouveau tampon dans l'onglet actuel. Existe-t-il un moyen pour que toutes ces sortes de commandes ouvrent le fichier dans un nouvel onglet ou basculent vers l'onglet existant avec le fichier s'il est déjà ouvert?Lors du changement de tampons, je peux utiliser
:b <part of filename><tab>
et cela 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. Existe-t-il un équivalent pour changer d'onglet?
Un peu tard pour la fête ici, mais surpris de ne pas voir ce qui suit dans cette liste:
:tab sball
- cela ouvre un nouvel onglet pour chaque tampon ouvert.:help switchbuf
- cela contrôle le comportement de commutation du tampon, essayez:set switchbuf=usetab,newtab
. Cela devrait signifier basculer vers l'onglet existant si le tampon est ouvert, ou en créer un nouveau dans le cas contraire.la source
switchbuf
-set switchbuf=useopen
est grande pour éviter le comportement ennuyeux des:make
,:vimgrep
et des commandes similaires qui change les tampons dans la mise en page de la fenêtre , même lorsque la mémoire tampon a déjà été affiché.:se switchbuf=usetab,newtab
, quand une utilisationbn
pour changer de tampon, il ouvre toujours le fichier tampon dans l'onglet actuel au lieu de basculer vers l'onglet existant? Y a-t-il quelque chose qui ne va pas?Vim
:help window
explique assez bien la confusion "tabs vs buffers".L'ouverture de plusieurs fichiers est réalisée dans vim avec des 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 ont pour but de diviser l'espace de travail et d'afficher plusieurs fichiers (tampons) ensemble sur un seul écran. Dans d'autres éditeurs, cela pourrait être réalisé en ouvrant plusieurs fenêtres GUI et en les réorganisant sur le bureau.
Enfin, dans cette analogie, les pages à onglet de vim correspondraient à plusieurs bureaux, c'est-à-dire différents réarrangements de fenêtres.
Comme l'
help: tab-page
explique Vim, une page à onglet peut être utilisée, lorsque l'on souhaite modifier 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 dans le but de modifier ce fichier particulier.Bien sûr, vous devez vous rappeler que l'affichage du même fichier dans de nombreuses pages à onglet ou fenêtres entraînerait l'affichage de la même copie de travail (tampon).
la source
buffer
= objet ,window
= vitre ettab
= fenêtre . Je peux me déplacer dans la pièce et regarder depuis différentes fenêtres (tabs
). Différentes fenêtres peuvent avoir un nombre, une disposition et une taille de volets différents . Le même objet peut être visualisé simultanément à partir de différents volets dans différentes fenêtres .vim
utilisation. Au début, il n'y avait qu'une fenêtre . Les gestionnaires de fenêtres vous ont ensuite permis de diviser les fenêtres en volets (mosaïque WM) ou en volets superposés (, WM flottant), mais ils se référaient toujours à chaque volet comme une fenêtre. Ajoutez maintenant le concept d'un espace de travail où le volet peut être affiché dans plusieurs espaces de travail. Donc, dans ce paradigme,buffer
= app ,window
= window ettab
= workspace .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 forcer à travailler selon des paramètres prédéfinis. Nous savons tous comment nous, les programmeurs, aimons imposer notre "éthique" à tous les autres, donc cette réalisation est certainement une caractéristique principale.
<C-w>gf
est l'équivalent tabulation de lagf
commande des tampons .<C-PageUp>
et<C-PageDown>
basculera entre les onglets. (Dans Byobu, ces deux commandes ne fonctionnent jamais pour moi, mais elles fonctionnent en dehors de Byobu / tmux. Les alternatives sontgt
etgT
.)<C-w>T
Déplaceront la fenêtre actuelle vers une nouvelle page d'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-le
:set switchbuf=usetab
à votre fichier .vimrc. Vous pouvez ajouternewtab
à la liste (:set switchbuf=usetab,newtab
) pour forcer les commandes QuickFix qui affichent les erreurs de compilation à s'ouvrir dans des onglets séparés. Je préfèresplit
plutôt, ce qui ouvre les erreurs de compilation dans une fenêtre divisée.Si la prise en charge de la souris est activée avec
:set mouse=a
, vous pouvez interagir avec les onglets en cliquant dessus. Il y a également un+
bouton par défaut qui créera 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 concernent les onglets, vous pouvez donc également consulter cette documentation via: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 normales d'analyse des options de ligne de commande. Vous pouvez également ajouter un mappage d'alias bashvim
àvim -p
.la source
vim -p
cependant être conscient que jusqu'à 10 onglets seront affichés par défaut. Les fichiers supplémentaires sont chargés dans des tampons, mais ne s'affichent pas dans leur propre onglet.tabpagemax
paramètreJ'ai rencontré le même problème. Je voulais que les onglets fonctionnent comme des tampons et je n'arrive jamais à les obtenir. La solution sur laquelle j'ai finalement opté était de faire en sorte que les tampons se comportent comme des tabulations!
Découvrez le plugin appelé Mini Buffer Explorer , une fois installé et configuré, vous pourrez travailler avec les tampons virtuellement de la même manière que les onglets sans perdre aucune fonctionnalité.
la source
C'est une réponse pour ceux qui ne connaissent pas 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 les lisez suffisamment, les choses commencent à avoir un sens, mais cela m'a pris des heures à faire des allers-retours entre les questions.
La première chose est, comme d'autres l'ont expliqué:
Les pages à onglets ressemblent beaucoup à des onglets , elles agissent comme des onglets et ressemblent beaucoup à des onglets dans la plupart des autres éditeurs GUI, mais elles ne le sont pas. Je pense que c'est un mauvais modèle mental qui a été construit dans Vim, qui obscurcit malheureusement le pouvoir supplémentaire que vous avez dans une page à onglet.
La première description que j'ai comprise était de la réponse de @ crenate, c'est qu'ils sont l'équivalent de plusieurs bureaux. Quand on le voit à cet égard, vous n'aurez jamais que deux bureaux ouverts mais beaucoup de fenêtres GUI ouvertes dans chacun.
Je dirais qu'ils sont similaires à ceux d'autres éditeurs / navigateurs:
Quand vous les voyez comme ça, vous vous rendez compte de leur puissance que vous pouvez facilement regrouper des ensembles de fichiers (tampons), par exemple vos fichiers CSS, vos fichiers HTML et vos fichiers JS dans différentes pages à onglet. Ce qui est en fait assez génial.
Autres descriptions que je trouve déroutantes
Fenêtre
Cela n'a aucun sens pour moi. Une fenêtre qui, bien qu'elle ait un terme de dictionnaire défini , je n'ai entendu parler que de fenêtres Vim dans le
:help window
document. Viewport n'est pas un terme que j'ai jamais entendu en ce qui concerne les éditeurs comme Sublime Text, Visual Studio, Atom, Notepad ++. En fait, je n'en avais jamais entendu parler pour Vim jusqu'à ce que je commence à essayer d'utiliser les pages à onglets.Si vous affichez des pages à onglet comme plusieurs bureaux, alors se référer à un bureau comme une seule fenêtre semble étrange.
Espaces de travail
Cela a peut-être plus de sens, la définition du dictionnaire est:
C'est donc comme un endroit où vous stockez un groupe de tampons.
Au départ, je ne ressemblais pas au concept d'un espace de travail de Sublime Text qui est une liste de tous les fichiers que vous avez ouverts dans votre projet:
Cependant, en y réfléchissant davantage, cela est en fait d'accord. Si vous considérez une page à onglet Vim comme un projet Sublime Text, il semblerait étrange de n'avoir qu'un seul fichier ouvert dans chaque projet et de continuer à basculer entre les projets. C'est pourquoi il est étrange d'utiliser une page à onglet pour ouvrir un seul fichier.
Collection de fenêtres
Le
:help window
fait référence aux pages à onglet de cette façon. 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 du sable.Comme je l'ai mentionné ci-dessus, une fenêtre vim est la même qu'une fenêtre d'affichage et silencieuse parfaitement expliquée dans cet article linux.com :
Je trouve étrange qu'une page à onglet soit appelée une collection de fenêtres au lieu d'une collection de tampons. Mais je suppose que vous pouvez ouvrir deux pages d'onglets distinctes chacune avec plusieurs fenêtres pointant toutes vers le même tampon, du moins c'est ce que je comprends jusqu'à présent.
la source
En regardant: onglets d'aide il ne ressemble pas à vim veut fonctionner comme vous le faites ...
Les tampons sont partagés entre les onglets, il ne semble donc pas possible de verrouiller un tampon donné pour qu'il n'apparaisse que sur un certain onglet.
C'est une bonne idée, cependant.
Vous pourriez probablement obtenir l'effet souhaité en utilisant un terminal qui prend en charge les onglets, comme multi-gnome-terminal, puis en exécutant des instances vim dans chaque onglet de terminal. Pas parfait, cependant ...
la source
Vous pouvez mapper des commandes qui manipulent normalement les tampons pour manipuler les onglets, comme je l'ai fait avec gf dans mon .vimrc:
Je suis sûr que vous pouvez faire de même avec [^
Je ne pense pas que vim le supporte (pour l'instant). J'utilise gt et gT pour passer aux onglets suivant et précédent, respectivement. Vous pouvez également utiliser Ngt, où N est le numéro de tabulation. Un béguin que j'ai, c'est que, par défaut, le numéro de tabulation n'est pas affiché dans la ligne de tabulation. Pour résoudre ce problème, j'ai mis quelques fonctions à la fin de mon fichier .vimrc (je n'ai pas collé ici car il est long et n'a pas été formaté correctement).
la source
<c-w>gf
ouvrira le nom du fichier sous le curseur dans un nouvel ongletJ'utilise des tampons comme des onglets, en utilisant le plugin BufExplorer et quelques macros:
Avec BufExplorer, vous n'avez pas de barre d'onglets en haut, mais d'un autre côté, il économise de l'espace sur votre écran, et vous pouvez avoir un nombre infini de fichiers / tampons ouverts et la liste des tampons est consultable ...
la source
Si vous souhaitez que les tampons fonctionnent comme des onglets, consultez le plugin de tabline .
Cela utilise une seule fenêtre et ajoute une ligne en haut pour simuler les onglets (affichant simplement la liste des tampons). Cela est sorti il y a longtemps lorsque les onglets n'étaient pris en charge que dans GVim mais pas dans la ligne de commande vim. Puisqu'il ne fonctionne qu'avec des tampons, tout s'intègre bien avec le reste de vim.
la source