Wie ändere ich die Breite und Höhe des aktuellen Abschnitts?

111

Ich arbeite an Split-Puffern (mit ^ w + v, ^ w + s), aber manchmal möchte ich einen aktuellen Split verbreitern oder seine Höhe ändern. Wie kann ich das erreichen?

Nebril
quelle

Antworten:

158

Es gibt verschiedene Fensterbefehle, mit denen Sie dies tun können:

  • Ctrl+W +/-: Höhe vergrößern / verkleinern (Bsp. 20<C-w>+)
  • Ctrl+W >/<: Breite vergrößern / verkleinern (Bsp. 30<C-w><)
  • Ctrl+W _: Höhe einstellen (Bsp. 50<C-w>_)
  • Ctrl+W |: Breite einstellen (Bsp. 50<C-w>|)
  • Ctrl+W =: Breite und Höhe aller Fenster ausgleichen

Siehe auch: :help CTRL-W

Türknauf
quelle
19
Beachten Sie auch, dass die Größe der ersten beiden Optionen um jeweils mehr als eine Zeile / Spalte geändert werden kann.
Rich
4
Es kann auch erwähnenswert sein, dass die dritte und vierte Option nicht gezählt werden können, um die Größe auf die maximale Höhe / Breite zu ändern.
Michael
2
Auf meinem System ist es :help CTRL-Wund nicht:help CTRL_W
Alexej Magura
auf Fenster, Cygwin, vim: wenn Sie vimdiff -o bigfile1.bash bigfile2.bash: ctrl-w =: öffnet ein MiniBufExplorer 3. Fenster oben (und die drei Fenster sind nun gleich groß), und dass ein Schließen macht das erste Fenster 2 timse größer als die zweite .bash Datei .bash Datei Fenster. Dieselbe Operation mit 2 .vim-Dateien führt zu denselben Ergebnissen. :( Dasselbe mitvim -o
Olivier Dulac
Bitte um Abkürzung für die ersten beiden Optionen vi.stackexchange.com/questions/16786/…
KcFnMi
43

Sie können auch die folgenden resizeBefehle verwenden:

  • :resize [+-]N - Ändern Sie die Größe einer horizontalen Teilung, indem Sie die Höhe um N Zeichen erhöhen oder verringern.
  • :vertical resize [+-]N - Ändern Sie die Größe einer vertikalen Teilung, indem Sie die Höhe um N Zeichen erhöhen oder verringern.
  • :resize N - Ändern Sie die Größe einer horizontalen Teilung und stellen Sie die Höhe auf N Zeichen ein.
  • :vertical resize N - Ändern Sie die Größe einer vertikalen Teilung und stellen Sie die Breite auf N Zeichen ein.

Diese entsprechen den CtrlwBefehlen. Sehen :help window-resize.

muru
quelle
29

Dies ist einer der wenigen Gründe, warum ich gerne den Mausmodus von vim verwende.

Wenn Sie die GUI-Version verwenden oder Ihr Terminal das Senden von Ziehereignissen (z. B. xterm oder rxvt-unicode) unterstützt, können Sie auf die Trennlinie klicken und die Größe des Fensters ändern, ohne viel raten zu müssen -w plus, minus, weniger, größere Kombinationen.

In Terminalversionen müssen Sie den Mausmodus richtig einstellen, damit dies funktioniert

:set mouse=n

(Ich benutze 'n', aber 'a' funktioniert auch)

und du musst den tty maus typ einstellen

:set ttymouse=xterm2

Viele Leute sagen, dass viel Zeit mit der Maus verschwendet wird (meistens aufgrund der Zeit, die benötigt wird, um Ihre Hand von der Tastatur zur Maus und zurück zu bewegen), aber ich finde, dass in diesem Fall die Zeit gespart wird durch Die unmittelbare Rückmeldung beim Anpassen der Fenstergröße und die Schnelligkeit der Größenänderung (Bewegen Sie die Maus weiter, anstatt eine andere Tastenfolge einzugeben) überwiegen die Verzögerung der Mauszeiger.

John O'M.
quelle
4
Ich konnte nicht mehr zustimmen, fand ich in Gnome-Terminal :set mouse=nist genug, aber zu aktivieren, wenn in tmux :set ttymouse=xterm2benötigt wird.
the_velour_fog
1
Absolut wahr, ich liebe Tastatur, aber solche Dinge sind besser mit der Maus.
Calbertts
Wow, danke, dass du mich darauf aufmerksam gemacht hast!
Charlie Gorichanaz
Ich stimme voll und ganz zu ", aber ich finde, dass in diesem Fall die Zeitersparnis durch sofortiges Feedback beim Anpassen der Fenstergröße und die Schnelligkeit der Größenänderung (Bewegen Sie die Maus weiter, anstatt eine andere Tastensequenz einzugeben) die Verzögerung der Mauszeiger überwiegt. " .
Nawaz
4

Scheint niemand erwähnt z{nr}<CR>.

Wenn Sie sehen :h ^w_, dann sehen Sie z{nr}<CR>genau darunter, welche Wirkung wie CTRL-W_.

Wenn Sie keine z=Rechtschreibprüfung benötigen und unten hinzufügen .vimrc,

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

Dann zum Ändern der Fensterhöhe:

  • z0<CR> um die Höhe des aktuellen Fensters zu minimieren
  • z99<CR> um die Höhe des aktuellen Fensters zu maximieren
  • z= um sie alle gleich zu machen
qeatzy
quelle
2
Diese Verwendung von zist ein wenig uninteressant. Ich denke, wir sollten uns an C-WAbbildungen halten. Es ist aber schön zu wissen, was da draußen ist.
Klaus
4

Schnelleres Ändern der Teilungsgröße: http://vim.wikia.com/wiki/Resize_splits_more_quickly

Sie können den :resizeBefehl oder seine Verknüpfung verwenden :res, um die Höhe des Fensters zu ändern. Um die Höhe auf 60 Zeilen zu ändern, verwenden Sie: :resize 60

Sie können die Höhe auch in Schritten ändern. Verwenden Sie zum Ändern der Höhe in Schritten von 5 Folgendes: :res +5 :res -5

Sie können Folgendes verwenden: Vertikale Größenänderung, um die Breite des aktuellen Fensters zu ändern. Um die Breite auf 80 Spalten zu ändern, verwenden Sie: :vertical resize 80

Sie können die Breite auch in Schritten ändern. Verwenden Sie zum Ändern der Breite in Schritten von 5 Folgendes: :vertical resize +5 :vertical resize -5

galian
quelle
Das ist sehr unwahrscheinlich zu sein Resize splits more quickly, es sei denn , diese Befehle zu keybindings gebunden sind, die aus dem Kasten heraus getan wurde
klaus
Stimmen Sie Enans Aussage nicht ganz zu. Diese Antwort gefällt mir imho
craft
0

Aus irgendeinem Grund (wahrscheinlich ein Plugin) funktionierte der Standard C-w >(etc.) in meinem nicht ~/.vimrc.

Diese .vimrcZusätze funktionierten ( Ctrl-Shift-Left... wobei Left | Right= linke bzw. rechte Pfeiltaste).

" 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>
Victoria Stuart
quelle