Ouvrir un tampon en tant que division verticale dans VIM

176

Si vous éditez un fichier dans VIM et que vous devez ensuite ouvrir un tampon existant (par exemple à partir de votre liste de tampons:) :bufferscomment pouvez-vous l'ouvrir dans une division verticale?

Je sais que vous pouvez déjà l'ouvrir avec un split normal comme:

:sbuffer N

WeHere Nest le numéro de tampon que vous voulez, cependant, ce qui précède ouvre ce Ntampon horizontalement, pas verticalement.

Je suis également conscient que vous pouvez modifier le placement de la fenêtre après l'ouverture et avoir une division verticale comme ceci:

Ctrl-W H
Ctrl-W L

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

Il me semble que s'il y a un sbufferil devrait y avoir un vsbuffermais qui n'existe pas (pas que je sache)

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

Je suis sûr qu'il me manque peut-être quelque chose qui existe déjà.

EDIT: Dans le meilleur esprit de collaboration, j'ai créé une fonction simple avec un mappage si quelqu'un d'autre tombe sur ce problème et ne veut pas installer de 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>)

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

:Vbuffer 1
Alfredodeza
la source

Réponses:

206

Essayer:

:vert sb N

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

Pour ouvrir une scission vers la droite, par contre:

:vert belowright sb N
Jeet
la source
5
ne pas sembler un peu bizarre de ne pas avoir vsbuffer N? Énervant. Votre réponse le cloue. Merci!
alfredodeza
13
J'ai toujours l'impression qu'il devrait y en avoir un vsbufferaussi, et j'oublie aussi souvent Ctrl-w Td'ouvrir un tampon dans un nouvel onglet (ou je veux le faire avec un tampon qui n'est actuellement ni actif ni visible). Donc, comme alternative, vous pouvez utiliser une barre pour l'un ou l'autre de ces cas, que je trouve plus facile à retenir que la réponse valide de @ Jeet: :vsp | b Net :tabe | b N.
ches
J'aime que cette commande permette Nd'être autocomplétée (ce qui ne semble pas possible avec la commande dans l'autre réponse). Les deux ont néanmoins voté pour.
David Rivers
124

:vsp | b1

1 étant un numéro de tampon. Utilisez bufferspour lister tous les tampons.

Voici quelques informations supplémentaires sur les fractionnements, si cela vous intéresse. Lien

Jerinaw
la source
9
Vous pouvez également utiliser :ls, qui semble être un raccourci pour :buffers.
dskecse
3
vous pouvez aussi faire:vsp | b <buffer name>
Kenny Bambridge le
4
@KennyBambridge encore mieux - il vous suffit de taper une partie du nom du tampon (sensible à la casse), puis d'
appuyer
Gardez à l'esprit que bien que le lien fourni par @Jerinaw soit bon, la terminologie de cette page est sérieusement trompeuse, vous devrez donc également lire les commentaires sur cette page pour clarifier.
NeilG
5

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

cabbrev vb vert sb

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

:vb <buffer>
Vamshi Kadaru
la source
c'est sympa, la version étendue propose aussi l'auto-complétion des noms de tampons! Je ne connaissais pas cabbrev aussi, merci.
kidpixo
2

Vous pouvez également combiner :lsqui répertorie vos tampons actuels et les commandes pour ouvrir le tampon souhaité dans l'un ou l'autre

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

Pour cela, j'ai ajouté les mappages suivants à mon ~/.vimrc(l'ordre des mappages 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

puis entrez simplement le numéro de tampon souhaité N. Cela ouvrira alors le tampon dans la fenêtre souhaitée. Vous pouvez bien sûr toujours utiliser une partie du nom du tampon bufname.

J'ai mappé le <leader>à ,basé sur

let mapleader = ","

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

Wolfson
la source
0

vous pouvez utiliser Neovim, comme ça:

autocmd FileType python nmap <F5> :rightbelow vertical split <bar> :term python %<cr>
Arobt
la source