Bagaimana cara mengubah lebar dan tinggi split saat ini?

111

Saya sedang mengerjakan buffer split (menggunakan ^ w + v, ^ w + s), tetapi kadang-kadang saya ingin memperluas split saat ini atau mengubah ketinggiannya. Bagaimana saya bisa mencapainya?

Nebril
sumber

Jawaban:

158

Ada beberapa perintah jendela yang memungkinkan Anda melakukan ini:

  • Ctrl+W +/-: menambah / mengurangi ketinggian (mis. 20<C-w>+)
  • Ctrl+W >/<: menambah / mengurangi lebar (mis. 30<C-w><)
  • Ctrl+W _: atur tinggi (mis. 50<C-w>_)
  • Ctrl+W |: atur lebar (mis. 50<C-w>|)
  • Ctrl+W =: menyamakan lebar dan tinggi semua jendela

Lihat juga: :help CTRL-W

Gagang pintu
sumber
19
Mungkin juga patut dicatat bahwa dua opsi pertama dapat menghitung untuk mengubah ukuran oleh lebih dari satu baris / kolom sekaligus.
Kaya
4
Mungkin juga perlu dicatat bahwa opsi 3 dan 4 dapat mengambil tidak menghitung untuk mengubah ukuran ke maksimum tinggi / lebar.
Michael
2
Di sistem saya, ini :help CTRL-Wdan bukan:help CTRL_W
Alexej Magura
di windows, Cygwin, vim: when Anda vimdiff -o bigfile1.bash bigfile2.bash:: ctrl-w =membuka jendela MiniBufExplorer ke-3 di atas (dan 3 jendela berukuran sama), dan menutup yang satu membuat jendela file .bash pertama 2 kali lebih besar dari file .bash ke-2 jendela. Operasi yang sama dengan 2 file .vim memberikan hasil yang sama. :( Sama denganvim -o
Olivier Dulac
Meminta jalan pintas untuk dua opsi pertama vi.stackexchange.com/questions/16786/…
KcFnMi
43

Anda juga dapat menggunakan resizeperintah:

  • :resize [+-]N - mengubah ukuran pemisahan horizontal, menambah atau mengurangi ketinggian dengan karakter N.
  • :vertical resize [+-]N - mengubah ukuran pemisahan vertikal, menambah atau mengurangi ketinggian dengan karakter N.
  • :resize N - mengubah ukuran pemisahan horizontal, mengatur tinggi ke N karakter.
  • :vertical resize N - mengubah ukuran pemisahan vertikal, mengatur lebar ke N karakter.

Ini setara dengan Ctrlwperintah. Lihat :help window-resize.

muru
sumber
29

Ini adalah salah satu dari beberapa alasan saya suka menggunakan mode mouse vim.

Jika Anda menggunakan versi GUI, atau terminal Anda mendukung pengiriman acara seret (seperti xterm atau rxvt-unicode), Anda dapat mengeklik garis pemisah dan menyeret untuk mengubah ukuran jendela tepat di tempat yang Anda inginkan, tanpa banyak pekerjaan menebak menggunakan ctrl. -w plus, minus, kurang, kombinasi yang lebih besar.

Dalam versi terminal, Anda harus mengatur mode mouse dengan benar agar ini berfungsi

:set mouse=n

(Saya menggunakan 'n', tetapi 'a' juga berfungsi)

dan Anda harus mengatur jenis mouse tty

:set ttymouse=xterm2

Banyak orang mengatakan bahwa banyak waktu terbuang dengan menggunakan mouse (sebagian besar karena waktu yang diperlukan untuk memindahkan tangan Anda dari keyboard ke mouse dan kembali), tetapi saya menemukan bahwa, dalam hal ini, waktu dihemat oleh memiliki umpan balik langsung sambil menyesuaikan ukuran jendela dan kecepatan mengubah ukuran (terus menggerakkan mouse alih-alih mengetik urutan kunci lainnya) melebihi keterlambatan tangan moingmy.

John O'M.
sumber
4
Saya sangat setuju, saya temukan di terminal Gnome :set mouse=nsudah cukup, tetapi untuk mengaktifkan ketika di dalam tmux :set ttymouse=xterm2diperlukan.
the_velour_fog
1
Benar sekali, saya suka keyboard, tetapi hal-hal seperti ini lebih baik dengan mouse.
Calbertts
Wow, terima kasih telah menyampaikan ini kepada saya!
Charlie Gorichanaz
Sepenuhnya setuju dengan "tetapi saya menemukan bahwa, dalam hal ini, waktu dihemat dengan memiliki umpan balik langsung sambil menyesuaikan ukuran jendela dan kecepatan mengubah ukuran kembali (terus menggerakkan mouse alih-alih mengetik urutan kunci lain) melebihi keterlambatan tangan moingmy. " .
Nawaz
4

Sepertinya tidak ada yang disebutkan z{nr}<CR>.

Jika Anda :h ^w_, maka akan melihat z{nr}<CR>tepat di bawahnya, yang memiliki efek yang sama dengan CTRL-W_.

Jika Anda tidak perlu z=memeriksa ejaan, dan menambahkan di bawah ini untuk .vimrc,

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

Kemudian untuk mengubah tinggi jendela:

  • z0<CR> untuk meminimalkan ketinggian jendela saat ini
  • z99<CR> untuk memaksimalkan ketinggian jendela saat ini
  • z= untuk membuat mereka semua sama
qeatzy
sumber
2
penggunaan zini sedikit tidak intuitif. Saya pikir kita harus tetap berpegang pada C-Wpemetaan. Senang mengetahui apa yang ada di luar sana.
klaus
4

Ubah ukuran pemisahan lebih cepat :http://vim.wikia.com/wiki/Resize_splits_more_quickly

Anda dapat menggunakan :resizeperintah atau pintasannya :resuntuk mengubah ketinggian jendela. Untuk mengubah ketinggian menjadi 60 baris, gunakan: :resize 60

Anda juga dapat mengubah ketinggian secara bertahap. Untuk mengubah ketinggian dengan penambahan 5, gunakan: :res +5 :res -5

Anda dapat menggunakan: mengubah ukuran vertikal untuk mengubah lebar jendela saat ini. Untuk mengubah lebar menjadi 80 kolom, gunakan: :vertical resize 80

Anda juga dapat mengubah lebar secara bertahap. Untuk mengubah lebar dengan penambahan 5, gunakan: :vertical resize +5 :vertical resize -5

galian
sumber
Ini sangat tidak mungkin terjadi Resize splits more quickly, kecuali perintah-perintah ini terikat pada keybindings, yang telah dilakukan di luar kotak
klaus
Jangan sepenuhnya menyetujui pernyataan Enan. Saya suka jawaban ini imho
craft
0

Untuk beberapa alasan (kemungkinan plugin) standar C-w >(dll.) Tidak berfungsi di blog saya ~/.vimrc.

.vimrcTambahan ini berfungsi ( Ctrl-Shift-Left... di mana Left | Right= tombol panah kiri dan kanan, masing-masing.

" 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
sumber