62 votes

Comment modifier un tampon existant dans un nouvel onglet de vim ?

Supposons que j'ai démarré vim comme ceci :

vim foo bar

Maintenant, je décide que je veux que chacun de ces fichiers soit dans son propre onglet. Existe-t-il un moyen de le faire sans quitter vim et sans ajouter la commande -p à ma ligne de commande ?

60voto

Rook Points 23039

Vous souhaitez ouvrir un buffer dans un nouvel onglet ?

Divisez l'écran (Ctrl-W s), prenez une fenêtre, et Ctrl-W T

37voto

rkjnsn Points 511

Vous pouvez y parvenir en combinant le tab avec la commande sb[uffer] mando.

Vous devez d'abord connaître l'identifiant du buffer que vous souhaitez ouvrir dans un nouvel onglet. Vous pouvez le trouver avec la fonction ls commandement :

:ls
  1 %a   "foo"                          line 1
  2      "bar"                          line 0

Une fois que vous avez l'identifiant, vous pouvez facilement l'ouvrir dans un nouvel onglet en utilisant :

:tab sb 2

En sb ouvre normalement le tampon donné dans une nouvelle fenêtre divisée, mais la commande tab fait en sorte qu'il s'ouvre dans un nouvel onglet, à la place.

En tab vous permet également de spécifier à quel endroit de la liste des onglets le nouvel onglet doit être créé. Par exemple, :0tab sb 2 aurait pour effet de faire apparaître le nouvel onglet "bar" au début de la liste et non après l'onglet actuel.

35voto

DaveParillo Points 14135

Lorsque vous lancez vim de cette manière, vous n'obtenez pas de client vim, l'éditeur de texte utilise le terminal ou l'invite cmd - les deux fichiers sont dans deux tampons différents. Utilisez :ls pour lister les tampons :

:ls
  1 %a   "foo"                 line 6
  2      "bar"             line 0

Le %a est la mémoire tampon active. Vous pouvez utiliser :b2 pour passer à la mémoire tampon 2 ou utiliser :bn pour passer à l'étape suivante ou :bp pour les précédents. Je préfère (CTRL-W v) pour diviser Windows verticalement, plutôt que (CTRL-W s), qui divise horizontalement.

Si vous avez 2 fichiers chargés et aucun onglet (encore), vous pouvez, :tabnew et dans le nouvel onglet, tapez :b2

Si vous souhaitez que les tampons soient toujours chargés dans leurs propres onglets, consultez la rubrique cet article .

28voto

Trevor Points 61

Une meilleure façon d'accomplir ce que le PO a demandé est la suivante :

:bufdo tab split

Cela ouvrira chaque tampon dans un onglet à part, quel que soit son nombre. Si vous utilisez beaucoup cette fonction, il est facile de la transformer en un mappage dans votre .vimrc. Combiné avec quelque chose comme ce petit plugin vim ce qui suit ouvrira chaque élément de :grep 又は :Ack ) dans un onglet qui lui est propre :

:grep foo
:QuickFixOpenAll
:bufdo tab split

Bien sûr, si l'on a recours à un plugin, il serait assez facile de le modifier pour ouvrir le contenu de la liste des corrections rapides directement dans des onglets.

UPDATE : Je dois vraiment donner un coup de chapeau au commentaire de ggustafsson ci-dessous. C'est de loin la meilleure réponse du lot et il illustre magnifiquement la tendance de Vim vers un comportement compositionnel. La suggestion est la suivante :

 :tab sball

Cela vaut la peine de consulter l'aide de Vim pour :tab y :sball pour voir ce qui se passe ici.

7voto

Shamaoke Points 496

1. Ouvrez deux fichiers dans Vim.

$ vim foo bar

2. Vérifiez le nombre de tampons.

:ls
  1%a "foo"
  2   "bar"

3. Enchaînez deux commandes : tabnew pour ouvrir un nouvel onglet et b <buffer_number> pour charger le tampon souhaité dans l'onglet.

:tabnew | b 2

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X