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.