Jak zmienić szerokość i wysokość bieżącego podziału?


111

Pracuję nad buforami podziału (używając ^ w + v, ^ w + s), ale czasami chciałbym poszerzyć bieżący podział lub zmienić jego wysokość. Jak mogę to osiągnąć?

Odpowiedzi:


158

Istnieje kilka poleceń okna, które pozwalają to zrobić:

  • Ctrl+W +/-: zwiększenie / zmniejszenie wysokości (np. 20<C-w>+)
  • Ctrl+W >/<: zwiększenie / zmniejszenie szerokości (np. 30<C-w><)
  • Ctrl+W _: ustaw wysokość (np. 50<C-w>_)
  • Ctrl+W |: ustaw szerokość (np. 50<C-w>|)
  • Ctrl+W =: wyrównanie szerokości i wysokości wszystkich okien

Zobacz też: :help CTRL-W


19
Warto również zauważyć, że pierwsze dwie opcje mogą liczyć na zmianę rozmiaru o więcej niż jedną linię / kolumnę na raz.
Bogaty

4
Może być również zauważyć, że 3 i 4 opcje mogą się nie liczyć na zmianę rozmiaru do maksymalnej wysokości / szerokości.
Michael

2
W moim systemie tak jest :help CTRL-Wi nie:help CTRL_W
Alexej Magura

W systemie Windows Cygwin, vim: kiedy vimdiff -o bigfile1.bash bigfile2.bash: ctrl-w =: otwiera okno MiniBufExplorer 3rd na górze (i 3 okna są teraz równe pod względem wielkości), a zamknięcie że jeden wykonuje pierwszy .bash plik na okno 2 timse większy niż 2. pliku .bash okno. Ta sama operacja z 2 plikami vim daje takie same wyniki. :( To samo zvim -o
Olivier Dulac

Pytanie o skrót dla dwóch pierwszych opcji vi.stackexchange.com/questions/16786/…
KcFnMi

43

Możesz także użyć resizepoleceń:

  • :resize [+-]N - zmień rozmiar podziału poziomego, zwiększając lub zmniejszając wysokość o N znaków.
  • :vertical resize [+-]N - zmiana rozmiaru podziału pionowego, zwiększenie lub zmniejszenie wysokości o N znaków.
  • :resize N - zmiana rozmiaru podziału poziomego, ustawienie wysokości na N znaków.
  • :vertical resize N - zmiana rozmiaru podziału pionowego, ustawiając szerokość na N znaków.

Są to odpowiedniki Ctrlwpoleceń. Zobaczyć :help window-resize.



29

To jeden z niewielu powodów, dla których lubię używać trybu myszy Vima.

Jeśli używasz wersji GUI lub twój terminal obsługuje wysyłanie zdarzeń przeciągania (takich jak xterm lub rxvt-unicode), możesz kliknąć linię podziału i przeciągnąć, aby zmienić rozmiar okna dokładnie tam, gdzie chcesz, bez dużej ilości domysłów przy użyciu ctrl -w plus, minus, mniej, większe kombinacje.

W wersjach terminalowych musisz poprawnie ustawić tryb myszy, aby to działało

:set mouse=n

(Używam „n”, ale „a” również działa)

i musisz ustawić typ myszy tty

:set ttymouse=xterm2

Wiele osób twierdzi, że przy użyciu myszy marnuje się dużo czasu (głównie ze względu na czas potrzebny na przesunięcie ręki z klawiatury na mysz i plecy), ale uważam, że w tym przypadku czas zaoszczędzony przez natychmiastowe sprzężenie zwrotne podczas dostosowywania rozmiaru okna i szybkość zmiany rozmiaru (poruszaj myszą zamiast wpisywać kolejną sekwencję klawiszy) przeważają nad opóźnieniem ruchowej dłoni.


4
Nie mogłem zgodzić się więcej, stwierdziłem, że w Gnome-terminal :set mouse=njest wystarczający, ale aby go włączyć, gdy :set ttymouse=xterm2jest potrzebny tmux .
the_velour_fog

1
Absolutnie prawda, uwielbiam klawiaturę, ale takie rzeczy są lepsze w przypadku myszy.
calbertts

Wow, dzięki za zwrócenie mojej uwagi!
Charlie Gorichanaz

Całkowicie się zgadzam z ", ale uważam, że w tym przypadku czas zaoszczędzony dzięki natychmiastowej informacji zwrotnej podczas dostosowywania rozmiaru okna i szybkość zmiany rozmiaru (poruszanie myszą zamiast pisania innej sekwencji klawiszy) przewyższa opóźnienie ruchliwej ręki. „ .
Nawaz

4

Nikt nie wspomina z{nr}<CR>.

Jeśli tak :h ^w_, zobaczysz z{nr}<CR>tuż pod nim, które mają taki sam efekt jak CTRL-W_.

Jeśli nie potrzebujesz z=sprawdzania pisowni i dodano poniżej .vimrc,

" vertical resize, z0<CR> minimize, z= equalize, z99<CR> maximize.
nnoremap z= <C-w>=

Następnie, aby zmienić wysokość okna:

  • z0<CR> aby zminimalizować wysokość bieżącego okna
  • z99<CR> aby zmaksymalizować wysokość bieżącego okna
  • z= aby wszystkie były równe

2
takie użycie zjest trochę nieintuicyjne. Myślę, że powinniśmy trzymać się C-Wmapowań. Fajnie jest wiedzieć, co tam jest.
klaus

4

Szybsza zmiana rozmiaru podziałów :http://vim.wikia.com/wiki/Resize_splits_more_quickly

Możesz użyć :resizepolecenia lub jego skrótu, :resaby zmienić wysokość okna. Aby zmienić wysokość na 60 rzędów, użyj: :resize 60

Możesz także zmieniać wysokość w przyrostach. Aby zmienić wysokość o 5, użyj: :res +5 :res -5

Możesz użyć: zmiana rozmiaru w pionie, aby zmienić szerokość bieżącego okna. Aby zmienić szerokość na 80 kolumn, użyj: :vertical resize 80

Możesz także zmieniać szerokość w przyrostach. Aby zmienić szerokość o 5, użyj: :vertical resize +5 :vertical resize -5


Jest to bardzo mało prawdopodobne Resize splits more quickly, chyba że te polecenia są powiązane z skrótami klawiszowymi, co zostało zrobione po wyjęciu z pudełka
klaus

Nie do końca zgadzaj się z oświadczeniem Enana. Podoba mi się ta odpowiedź imho
craft

0

Z jakiegoś powodu (prawdopodobnie wtyczki) standard C-w >(itp.) Nie działał w moim ~/.vimrc.

Te .vimrcdodatki działały ( Ctrl-Shift-Left... gdzie Left | Right= odpowiednio lewy i prawy klawisz strzałki.

" noremap <silent> <C-S-Left> :vertical resize +5<CR>
" noremap <silent> <C-S-Right> :vertical resize -5<CR>
noremap <silent> <C-S-Left> :vertical resize +1<CR>
noremap <silent> <C-S-Right> :vertical resize -1<CR>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.