Як змінити ширину та висоту поточного поділу?


111

Я працюю над розділеними (використовуючи ^ w + v, ^ w + s) буферами, але іноді мені хочеться розширити поточний спліт або змінити його висоту. Як я можу цього досягти?

Відповіді:


158

Існує кілька віконних команд, які дозволяють це зробити:

  • Ctrl+W +/-: збільшення / зменшення висоти (наприклад 20<C-w>+)
  • Ctrl+W >/<: збільшення / зменшення ширини (наприклад 30<C-w><)
  • Ctrl+W _: задана висота (наприклад 50<C-w>_)
  • Ctrl+W |: встановлена ​​ширина (наприклад 50<C-w>|)
  • Ctrl+W =: вирівняти ширину та висоту всіх вікон

Дивитися також: :help CTRL-W


19
Можливо, варто також відзначити, що перші два варіанти можуть приймати рахунок, щоб змінити розмір більше, ніж один рядок / стовпець одночасно.
Багатий

4
Можливо, варто також зазначити, що 3-й і 4-й параметри не можуть приймати жодних рахунків, щоб змінити розмір до максимальної висоти / ширини.
Майкл

2
У моїй системі це :help CTRL-Wі немає:help CTRL_W
Олексій Магура

у windows, Cygwin, vim: when you vimdiff -o bigfile1.bash bigfile2.bash:: ctrl-w =відкриває 3-е вікно MiniBufExplorer вгорі (і 3 вікна тепер рівні за розміром), і закриваючи це, вікно першого файлу .bash на 2-х разів перевищує 2-й файл .bash вікно. Одна і та ж робота з 2 .vim файлами дає однакові результати. :( Те саме зvim -o
Олів'є Дулак


43

Ви також можете використовувати resizeкоманди:

  • :resize [+-]N - змінити розмір горизонтального розбиття, збільшуючи або зменшуючи висоту на N символів.
  • :vertical resize [+-]N - змінити розмір вертикального розбиття, збільшуючи або зменшуючи висоту на N символів.
  • :resize N - змінити розмір горизонтального розбиття, встановивши висоту на N символів.
  • :vertical resize N - змінити розмір вертикального розбиття, встановивши ширину на N символів.

Вони еквівалентні Ctrlwкомандам. Див :help window-resize.



29

Це одна з небагатьох причин, що мені подобається використовувати режим миші vim.

Якщо ви використовуєте версію GUI або ваш термінал підтримує надсилання подій перетягування (таких як xterm або rxvt-unicode), ви можете натиснути на розділений рядок і перетягнути, щоб змінити розмір вікна саме там, де ви хочете, без великої кількості здогадок, використовуючи ctrl -w плюс, мінус, менше, більше комбінацій.

У термінальних версіях потрібно правильно встановити режим миші, щоб це працювало

:set mouse=n

(Я використовую 'n', але 'a' також працює)

і вам потрібно встановити тип миші tty

:set ttymouse=xterm2

Багато людей кажуть, що багато часу витрачається за допомогою миші (в основному через час, необхідний для переміщення вашої руки з клавіатури до миші та назад), але я вважаю, що в цьому випадку час економив наявність негайного зворотного зв’язку під час регулювання розміру вікна та швидкість зміни розміру вікна (продовжуйте рухати мишу замість введення іншої послідовності клавіш) переважає затримку руки Moingmy.


4
Я не міг більше погодитися, я виявив, що в Gnome-терміналі :set mouse=nдостатньо, але щоб увімкнути, коли потрібен всередині tmux :set ttymouse=xterm2.
the_velour_fog

1
Абсолютно правда, я люблю клавіатуру, але такі речі краще з мишею.
calbertts

Вау, дякую за те, що ви звернули це на мою увагу!
Charlie Gorichanaz

Цілком погоджуюся з ", але я вважаю, що в цьому випадку час, заощаджений за допомогою негайного зворотного зв’язку під час регулювання розміру вікна та швидкості повторного зміни розміру (продовжуйте рухати мишкою, а не вводити іншу послідовність клавіш), переважає затримку руки Moingmy. " .
Наваз

4

Здається, ніхто не згадав z{nr}<CR>.

Якщо ви :h ^w_, то побачите z{nr}<CR>трохи під ним, які мають такий же ефект, як і CTRL-W_.

Якщо вам не потрібна z=перевірка орфографії, і її додано нижче до .vimrc,

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

Потім для зміни висоти вікна:

  • z0<CR> щоб мінімізувати висоту поточного вікна
  • z99<CR> щоб збільшити висоту поточного вікна
  • z= щоб зробити їх рівними

2
це використання zтрохи неінтуїтивно. Я думаю, що ми повинні дотримуватися C-Wкарти. Приємно знати, що там все-таки.
Клаус

4

Швидше розмір розділів: http://vim.wikia.com/wiki/Resize_splits_more_quickly

Ви можете скористатися :resizeкомандою або її ярликом, :resщоб змінити висоту вікна. Щоб змінити висоту до 60 рядів, використовуйте: :resize 60

Ви також можете змінювати висоту з кроком. Щоб змінити висоту з кроком 5, використовуйте: :res +5 :res -5

Ви можете використовувати: вертикальний розмір, щоб змінити ширину поточного вікна. Щоб змінити ширину на 80 стовпців, використовуйте: :vertical resize 80

Ви також можете змінювати ширину з кроком. Щоб змінити ширину з кроком 5, використовуйте: :vertical resize +5 :vertical resize -5


Це малоймовірно Resize splits more quickly, якщо тільки ці команди не будуть прив’язані до клавішних зв'язків, що було зроблено поза коробкою
klaus

Не повністю згоден із твердженням Енана. Мені подобається ця відповідь imho
craft

0

Чомусь (швидше за все плагін) стандарт C-w >(і т.д.) не працював у моїх ~/.vimrc.

Ці .vimrcдоповнення спрацювали ( Ctrl-Shift-Left... де Left | Right= ліва та права клавіші зі стрілками відповідно.

" 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>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.