Öffnen Sie einen Puffer als vertikale Aufteilung in VIM

176

Wenn Sie eine Datei in VIM bearbeiten und dann einen vorhandenen Puffer öffnen müssen (z. B. aus Ihrer Pufferliste :), :bufferswie können Sie ihn in vertikaler Aufteilung öffnen?

Ich weiß, dass Sie es bereits mit einem normalen Split öffnen können, wie:

:sbuffer N

Hier Nist die gewünschte Puffernummer. Oben wird dieser NPuffer jedoch horizontal und nicht vertikal geöffnet .

Mir ist auch bewusst, dass Sie die Fensterplatzierung nach dem Öffnen ändern und eine vertikale Aufteilung wie folgt vornehmen können:

Ctrl-W H
Ctrl-W L

Dadurch wird das Fenster vertikal nach rechts oder links geteilt.

Es scheint mir, dass wenn es ein sbuffergibt , es ein geben sollte, vsbufferaber das existiert nicht (nicht das ich weiß)

Bitte beachten Sie auch, dass ich nicht nach einem Plugin suche, um diese Frage zu lösen. Ich kenne eine Fülle von Plugins, mit denen Sie dies tun können.

Ich bin mir sicher, dass mir etwas fehlt, das bereits vorhanden ist.

BEARBEITEN: Im besten Sinne der Zusammenarbeit habe ich eine einfache Funktion mit einem Mapping erstellt, wenn jemand anderes auf dieses Problem stößt und kein Plugin installieren möchte:

Funktion:

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

Kartierung:

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

Dies erfüllt die Aufgabe, einen Puffer in einer rechten Aufteilung zu öffnen. Für Puffer 1 würden Sie ihn also wie folgt nennen:

:Vbuffer 1
Alfredodeza
quelle

Antworten:

206

Versuchen:

:vert sb N

Dadurch wird eine linke vertikale Teilung geöffnet (standardmäßig, sofern Sie einige Optionen nicht geändert haben).

So öffnen Sie einen Split nach rechts:

:vert belowright sb N
Jeet
quelle
5
scheint es nicht ziemlich seltsam, nicht zu haben vsbuffer N? Nervig. Ihre Antwort nagelt es. Vielen Dank!
Alfredodeza
13
Ich habe immer das Gefühl, dass es auch einen geben sollte vsbuffer, und ich vergesse auch oft, Ctrl-w Teinen Puffer in einem neuen Tab zu öffnen (oder ich möchte dies mit einem Puffer tun, der derzeit nicht aktiv oder sichtbar ist). Alternativ können Sie für jeden dieser Fälle einen Balken verwenden, an den ich mich leichter erinnern kann als an die gültige Antwort von @ Jeet: :vsp | b Nund :tabe | b N.
ches
Ich finde es gut, dass dieser Befehl Nautomatisch vervollständigt werden kann (was mit dem Befehl in der anderen Antwort nicht möglich zu sein scheint). Trotzdem stimmten beide zu.
David Rivers
124

:vsp | b1

1 ist eine Puffernummer. Verwenden Sie buffersdiese Option, um alle Puffer aufzulisten.

Hier sind einige zusätzliche Informationen zu Splits, wenn Sie interessiert sind. Verknüpfung

Jerinaw
quelle
9
Sie könnten auch verwenden :ls, was eine Abkürzung für zu sein scheint :buffers.
dskecse
3
Sie können auch tun:vsp | b <buffer name>
Kenny Bambridge
4
@KennyBambridge noch besser - Sie müssen nur einen Teil des Puffernamens eingeben (Groß- und Kleinschreibung
beachten
Beachten Sie, dass , obwohl die Verbindung von @Jerinaw vorgesehen ist gut die Terminologie auf dieser Seite ernsthaft irreführend ist , so dass Sie die Kommentare auf dieser Seite als auch zu klären , lesen müssen.
NeilG
5

Sie können Ihre Schmerzen lindern, indem Sie Ihrer .vimrc Folgendes hinzufügen

cabbrev vb vert sb

Jetzt können Sie es folgendermaßen verwenden.

:vb <buffer>
Vamshi Kadaru
quelle
das ist schön, die erweiterte version bietet auch puffernamen autocompletion! Ich kannte Cabbrev auch nicht, danke.
Kidpixo
2

Sie können auch kombinieren, :lsdass Ihre aktuellen Puffer und die Befehle aufgelistet werden, um den gewünschten Puffer in beiden zu öffnen

  1. aktuelles Fenster: :b <N/bufname>
  2. vertikale Aufteilung: :vsp | b <N/bufname>
  3. horizontale Aufteilung: :sp | b <N/bufname>

Zu diesem Zweck habe ich die folgenden Zuordnungen zu meiner hinzugefügt ~/.vimrc(die Reihenfolge der Zuordnungen entspricht der obigen Liste der gewünschten Fenster).

 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>

Auf dieser Grundlage können Sie die Pufferliste sehen, sobald Sie drücken

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

und geben Sie dann einfach die gewünschte Puffernummer ein N. Dadurch wird der Puffer im gewünschten Fenster geöffnet. Sie können natürlich auch noch einen Teil des Puffernamens verwenden bufname.

Ich habe das <leader>auf ,basierend auf abgebildet

let mapleader = ","

Für einige Leute (zB mich) könnte dies sogar Plugins wie MiniBufExpl ersetzen und somit Platz auf dem Bildschirm sparen.

Wolfson
quelle
0

Sie können Neovim folgendermaßen verwenden:

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