196 votes

Ouvrir un tampon comme une division verticale dans le VIM

Si vous êtes en train de modifier un fichier dans le VIM et que vous devez ensuite ouvrir un tampon existant (par exemple, à partir de votre liste de tampons : :buffers ) comment l'ouvrir dans une division verticale ?

Je sais que vous pouvez déjà l'ouvrir avec une normal divisé comme ça :

:sbuffer N

Wehere N est le numéro de tampon que vous voulez, cependant, ce qui précède ouvre que N tampon horizontalement, pas verticalement.

Je sais aussi qu'il est possible de changer l'emplacement de la fenêtre après l'ouverture et d'avoir une division verticale comme ceci :

Ctrl-W H
Ctrl-W L

Ce qui divisera verticalement la fenêtre à droite ou à gauche.

Il me semble que s'il y a un sbuffer il devrait y avoir un vsbuffer mais cela n'existe pas (pas à ma connaissance).

Veuillez également noter que je ne cherche pas un plugin pour résoudre cette question. Je connais une multitude de plugins qui vous permettront de le faire.

Je suis sûr qu'il me manque quelque chose qui est déjà là.

EDIT : Dans le meilleur esprit de collaboration, j'ai créé une simple fonction avec une cartographie si quelqu'un d'autre tombe sur ce problème et ne veut pas installer un plugin :

Fonction :

" Vertical Split Buffer Function
function VerticalSplitBuffer(buffer)
    execute "vert belowright sb" a:buffer 
endfunction

Cartographie :

" Vertical Split Buffer Mapping
command -nargs=1 Vbuffer call VerticalSplitBuffer(<f-args>)

Ceci accomplit la tâche d'ouvrir un tampon dans une division droite, donc pour le tampon 1, vous l'appelleriez comme suit :

:Vbuffer 1

229voto

Jeet Points 10514

Essayez :

:vert sb N

qui ouvrira une division verticale gauche (par défaut, sauf si vous avez modifié certaines options).

Pour ouvrir une fente vers la droite, d'autre part :

:vert belowright sb N

5 votes

Cela ne semble-t-il pas plutôt étrange de ne pas avoir vsbuffer N ? Ennuyeux. Votre réponse est très claire. Merci !

13 votes

J'ai toujours pensé qu'il devrait y avoir un vsbuffer aussi, et j'oublie aussi souvent Ctrl-w T pour ouvrir un tampon dans un nouvel onglet (ou je veux faire cela avec un tampon qui n'est pas actuellement actif ou visible). Donc comme alternative, vous pouvez utiliser une barre pour l'un ou l'autre de ces cas, ce que je trouve plus facile à retenir que la réponse valide de @Jeet : :vsp | b N y :tabe | b N .

0 votes

J'aime que cette commande permette N pour être autocomplété (ce qui ne semble pas possible avec la commande de l'autre réponse). Les deux réponses ont été upvoted, néanmoins.

134voto

Jerinaw Points 600

:vsp | b1

1 étant un nombre tampon quelconque. Utilisez buffers pour lister tous les tampons.

Voici quelques informations supplémentaires sur les splits, si vous êtes intéressé. Lien

10 votes

Vous pouvez également utiliser :ls qui semble être un raccourci pour :buffers .

4 votes

Vous pouvez également faire :vsp | b <buffer name>

4 votes

@KennyBambridge encore mieux - il suffit de taper une partie du nom du tampon (sensible à la casse) puis d'appuyer sur la touche tabulation pour faire défiler la liste filtrée.

11voto

Danny Quah Points 51

La réponse à l'OP que j'ai trouvée la plus utile se trouve au cœur de la réponse de Jerinaw et d'un commentaire sur celle-ci, ainsi que dans la réponse de Wolfson. Mais j'ai pensé qu'elle pourrait être mise en évidence davantage. (Ces réponses n'ont pas non plus été votées le plus haut, même si elles me semblaient être celles qui répondaient le mieux au PO).

La réponse à la question, Pourquoi n'y a-t-il pas de :vsbuffer c'est qu'il y en a une. Il s'appelle :vsplit et fait l'affaire soit comme

:vsplit NameOfBuffer

OU

:vsplit #NumberOfBuffer .

(Dans cette deuxième utilisation, prenez soin de noter que le dièse # est significatif. Si vous voulez atteindre le tampon numéro 3, vous devez dire :vsplit #3 pas seulement :vsplit 3 qui créera à la place un nouveau fichier nommé "3").

Encore une fois, cette réponse est intégrée ci-dessus, mais elle n'est pas assez claire pour le scanner rapide, IMV.

7voto

Vamshi Kadaru Points 91

Vous pouvez soulager votre peine en ajoutant ce qui suit à votre fichier .vimrc

cabbrev vb vert sb

Vous pouvez maintenant l'utiliser de la manière suivante.

:vb <buffer>

4voto

Wolfson Points 479

Vous pouvez également combiner :ls qui liste vos tampons actuels et les commandes pour ouvrir le tampon désiré dans l'un des deux formats suivants

  1. fenêtre actuelle : :b <N/bufname>
  2. division verticale : :vsp | b <N/bufname>
  3. une division horizontale : :sp | b <N/bufname>

Pour cela, j'ai ajouté les mappings suivants à mon fichier ~/.vimrc (l'ordre des mappings représente la liste ci-dessus des fenêtres souhaitées)

 nnoremap <leader>b :ls<cr>:b<space>
 nnoremap <leader>v :ls<cr>:vsp<space>\|<space>b<space>
 nnoremap <leader>s :ls<cr>:sp<space>\|<space>b<space>

Sur cette base, vous pouvez voir la liste des tampons dès que vous appuyez sur

  1. <leader>b
  2. <leader>v
  3. <leader>s

et il suffit ensuite d'entrer le numéro de tampon souhaité N . Le tampon s'ouvre alors dans la fenêtre souhaitée. Vous pouvez bien sûr toujours utiliser une partie du nom du tampon bufname également.

J'ai cartographié le <leader> a , sur la base de

let mapleader = ","

Pour certaines personnes (par exemple moi), cela pourrait même remplacer des plugins comme MiniBufExpl et ainsi gagner de la place sur l'écran.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X