Come posso modificare la larghezza e l'altezza della divisione attuale?


111

Sto lavorando su buffer split (usando ^ w + v, ^ w + s), ma a volte vorrei allargare una divisione attuale o modificarne l'altezza. Come posso raggiungerlo?

Risposte:


158

Esistono diversi comandi della finestra che ti consentono di fare ciò:

  • Ctrl+W +/-: aumenta / diminuisci altezza (es. 20<C-w>+)
  • Ctrl+W >/<: aumenta / diminuisci larghezza (es. 30<C-w><)
  • Ctrl+W _: imposta altezza (es. 50<C-w>_)
  • Ctrl+W |: imposta larghezza (es. 50<C-w>|)
  • Ctrl+W =: equalizza larghezza e altezza di tutte le finestre

Guarda anche: :help CTRL-W


19
Potrebbe anche valere la pena notare che le prime due opzioni possono richiedere un conteggio per ridimensionare di più di una riga / colonna alla volta.
Ricco

4
Potrebbe anche essere la pena di notare che le opzioni 3 ° e 4 ° possono prendere nessun conteggio per ridimensionare al massimo altezza / larghezza.
Michael,

2
Sul mio sistema, è :help CTRL-We non:help CTRL_W
Alexej Magura,

Su Windows, Cygwin, vim: quando si vimdiff -o bigfile1.bash bigfile2.bash: ctrl-w =: apre una finestra MiniBufExplorer 3 ° in alto (e le 3 finestre è ora uguale per dimensioni), e la chiusura che si fa la prima del file .bash finestra 2 timse più grande del file .bash 2 ° finestra. La stessa operazione con 2 file .vim fornisce gli stessi risultati. :( Lo stesso convim -o
Olivier Dulac il

Chiedere il collegamento per le prime due opzioni vi.stackexchange.com/questions/16786/…
KcFnMi

43

Puoi anche usare i resizecomandi:

  • :resize [+-]N - ridimensiona una divisione orizzontale, aumentando o diminuendo l'altezza di N caratteri.
  • :vertical resize [+-]N - ridimensiona una divisione verticale, aumentando o diminuendo l'altezza di N caratteri.
  • :resize N - ridimensiona una divisione orizzontale, impostando l'altezza su N caratteri.
  • :vertical resize N - ridimensiona una divisione verticale, impostando la larghezza su N caratteri.

Questi sono equivalenti ai Ctrlwcomandi. Vedere :help window-resize.



29

Questo è uno dei pochi motivi per cui mi piace usare la modalità mouse di vim.

Se usi la versione GUI o il tuo terminale supporta l'invio di eventi di trascinamento (come xterm o rxvt-unicode) puoi fare clic sulla linea di divisione e trascinare per ridimensionare la finestra esattamente dove vuoi, senza troppe congetture usando il ctrl -w più, meno, meno, combinazioni maggiori.

Nelle versioni terminali, è necessario impostare correttamente la modalità mouse affinché funzioni

:set mouse=n

(Uso 'n', ma anche 'a' funziona)

e devi impostare il tipo di mouse tty

:set ttymouse=xterm2

Molte persone dicono che si perde molto tempo usando il mouse (principalmente a causa del tempo necessario per spostare la mano dalla tastiera al mouse e viceversa), ma trovo che, in questo caso, il tempo risparmiato da avere un feedback immediato mentre si regola la dimensione della finestra e la rapidità di ridimensionare (continuare a muovere il mouse invece di digitare un'altra sequenza di tasti) supera il ritardo della mano moingmy.


4
Non potrei essere più d'accordo, ho scoperto che in Gnome-terminal :set mouse=nè abbastanza, ma abilitarlo quando :set ttymouse=xterm2è necessario tmux .
the_velour_fog

1
Assolutamente vero, adoro la tastiera, ma questo tipo di cose sono migliori con il mouse.
calbertts,

Caspita, grazie per avermi portato alla mia attenzione!
Charlie Gorichanaz,

Totalmente d'accordo con "ma trovo che, in questo caso, il tempo risparmiato avendo un feedback immediato mentre si regola la dimensione della finestra e la rapidità di ridimensionare (continuare a spostare il mouse invece di digitare un'altra sequenza di tasti) supera il ritardo della mano moingmy. " .
Nawaz,

4

Sembra che nessuno abbia menzionato z{nr}<CR>.

Se tu :h ^w_, allora vedrai z{nr}<CR>proprio sotto di esso, che hanno lo stesso effetto di CTRL-W_.

Se non è necessario z=per il controllo ortografico e aggiunto di seguito a .vimrc,

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

Quindi per modificare l'altezza della finestra:

  • z0<CR> per ridurre l'altezza della finestra corrente
  • z99<CR> per massimizzare l'altezza della finestra corrente
  • z= per renderli tutti uguali

2
questo uso di zè un po 'poco intuitivo. Penso che dovremmo attenerci alle C-Wmappature. È bello sapere cosa c'è là fuori però.
klaus,

4

Il ridimensionamento si divide più rapidamente :http://vim.wikia.com/wiki/Resize_splits_more_quickly

È possibile utilizzare il :resizecomando o il relativo collegamento :resper modificare l'altezza della finestra. Per modificare l'altezza in 60 righe, utilizzare: :resize 60

È inoltre possibile modificare l'altezza in incrementi. Per modificare l'altezza con incrementi di 5, utilizzare: :res +5 :res -5

È possibile utilizzare: ridimensionamento verticale per modificare la larghezza della finestra corrente. Per modificare la larghezza in 80 colonne, utilizzare: :vertical resize 80

È inoltre possibile modificare la larghezza in incrementi. Per modificare la larghezza con incrementi di 5, utilizzare: :vertical resize +5 :vertical resize -5


È molto improbabile che ciò avvenga Resize splits more quickly, a meno che questi comandi non siano associati a combinazioni di tasti, che è stato fatto fuori dalla scatola
klaus

Non sono completamente d'accordo sulla dichiarazione di Enan. Mi piace questa risposta imho
craft

0

Per qualche motivo (probabilmente un plugin) lo standard C-w >(ecc.) Non ha funzionato nel mio ~/.vimrc.

Queste .vimrcaggiunte hanno funzionato ( Ctrl-Shift-Left... dove Left | Right= tasti freccia sinistra e destra, rispettivamente.

" 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>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.