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


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.