Otwórz bufor jako podział pionowy w VIM

176

Jeśli edytujesz plik w VIM, a następnie musisz otworzyć istniejący bufor (np. Z listy buforów:), :buffersjak możesz otworzyć go w podziale pionowym?

Wiem, że możesz go już otworzyć normalnym podziałem, takim jak:

:sbuffer N

NJest tam żądany numer bufora, jednak powyższe otwiera ten Nbufor poziomo, a nie pionowo.

Zdaję sobie również sprawę, że możesz zmienić położenie okna po otwarciu i mieć podział pionowy w następujący sposób:

Ctrl-W H
Ctrl-W L

Który podzieli pionowo okno w prawo lub w lewo.

Wydaje mi się, że jeśli istnieje, to sbufferpowinno być, vsbufferale to nie istnieje (nie żebym był tego świadomy)

Pamiętaj też, że nie szukam wtyczki do rozwiązania tego pytania. Wiem o bogactwie wtyczek, które pozwolą ci to zrobić.

Jestem pewien, że mogę przegapić coś, co już tam jest.

EDYCJA: W najlepszym duchu współpracy stworzyłem prostą funkcję z mapowaniem, jeśli ktoś inny natknie się na ten problem i nie chce instalować wtyczki:

Funkcjonować:

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

Mapowanie:

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

Realizuje to zadanie otwierania bufora w prawym podziale, więc dla bufora 1 można to nazwać tak:

:Vbuffer 1
alfredodeza
źródło

Odpowiedzi:

206

Próbować:

:vert sb N

co otworzy pionowy podział na lewo (domyślnie, chyba że zmodyfikowałeś niektóre opcje).

Z drugiej strony, aby otworzyć podział po prawej stronie:

:vert belowright sb N
Jeet
źródło
5
czy nie wydaje się dziwne, że nie ma vsbuffer N? Denerwujący. Twoja odpowiedź jest trafna. Dzięki!
alfredodeza
13
Zawsze czuję, że powinno być vsbuffer, a także często zapominam Ctrl-w To otwarciu bufora w nowej karcie (lub chcę to zrobić z buforem, który nie jest obecnie aktywny ani widoczny). Więc jako alternatywę możesz użyć paska w każdym z tych przypadków, który wydaje mi się łatwiejszy do zapamiętania niż prawidłowa odpowiedź @ Jeet: :vsp | b Ni :tabe | b N.
ches
Podoba mi się, że to polecenie pozwala Nna autouzupełnianie (co nie wydaje się możliwe w przypadku polecenia w innej odpowiedzi). Niemniej jednak obaj głosowali za.
David Rivers
124

:vsp | b1

1 to jakiś numer bufora. Służy buffersdo wyświetlania wszystkich buforów.

Oto dodatkowe informacje o podziałach, jeśli jesteś zainteresowany. Połączyć

Jerinaw
źródło
9
Możesz także użyć :ls, co wydaje się być skrótem do :buffers.
dskecse
3
możesz też to zrobić:vsp | b <buffer name>
Kenny Bambridge
4
@KennyBambridge jeszcze lepiej - wystarczy wpisać część nazwy bufora (z uwzględnieniem wielkości liter), a następnie nacisnąć
klawisz
Pamiętaj, że chociaż link dostarczony przez @Jerinaw jest dobry, terminologia na tej stronie jest poważnie myląca, więc musisz przeczytać komentarze na tej stronie, aby wyjaśnić.
NeilG
5

Możesz złagodzić swój ból, dodając następujący plik do pliku .vimrc

cabbrev vb vert sb

Teraz możesz go używać w następujący sposób.

:vb <buffer>
Vamshi Kadaru
źródło
to miłe, rozszerzona wersja oferuje również autouzupełnianie nazw buforów! Ja też nie znałam cabbrev, dzięki.
kidpixo
2

Możesz także łączyć, :lsktóre zawierają listę twoich bieżących buforów i poleceń otwierania żądanego buforu w jednym z nich

  1. aktualne okno: :b <N/bufname>
  2. podział pionowy: :vsp | b <N/bufname>
  3. podział poziomy: :sp | b <N/bufname>

W tym celu dodałem następujące mapowania do mojego ~/.vimrc(kolejność mapowań reprezentuje powyższą listę żądanych okien)

 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>

Na tej podstawie możesz zobaczyć listę buforów zaraz po naciśnięciu

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

a następnie wprowadź żądany numer bufora N. Spowoduje to otwarcie bufora w wybranym oknie. Oczywiście nadal możesz użyć części nazwy bufora bufname.

I zmapowali <leader>na ,podstawie

let mapleader = ","

Dla niektórych osób (np. Dla mnie) może to nawet zastąpić wtyczki, takie jak MiniBufExpl, a tym samym zaoszczędzić miejsce na ekranie.

Wolfson
źródło
0

możesz użyć Neovim, w ten sposób:

autocmd FileType python nmap <F5> :rightbelow vertical split <bar> :term python %<cr>
Arobt
źródło