Як ви можете переключити свої поточні вікна з горизонтального розбиття на вертикальне та навпаки у Vim?
Я зробив це хвилину тому випадково, але знову не можу знайти ключ.
Як ви можете переключити свої поточні вікна з горизонтального розбиття на вертикальне та навпаки у Vim?
Я зробив це хвилину тому випадково, але знову не можу знайти ключ.
Відповіді:
Список розсилки Vim говорить (переформатований для кращої читабельності):
Щоб змінити два вертикально розділених вікна на горизонтально розбиті
Ctrl- w t Ctrl-w K
По горизонталі до вертикалі:
Ctrl- w t Ctrl-w H
Пояснення:
Ctrl- w t робить перше (верхнє) вікно поточним
Ctrl- w K переміщує поточне вікно на повну ширину в самому верху
Ctrl- w H переміщує поточне вікно в повний зріст вліво
Зауважте, що t - малі, а K і H - великі.
Крім того , тільки два вікна, здається , що ви можете упустити Ctrl- w tпочасти тому , що , якщо ви вже в одному з тільки два вікна, в чому сенс зробити його поточним?
:nmap <leader>th <C-w>t<C-w>H
і:nmap <leader>tk <C-w>t<C-w>K
Ctrl- а wпотім H, J, Kабо L(капіталу) буде перемістити поточне вікно в далеку left
, bottom
, top
або , right
відповідно , як нормальний курсор навігації.
Еквіваленти нижнього регістру переміщують фокус замість переміщення вікна.
Ctrl
- w
(я не знаю, чи ^
означає це Ctrl
у вашому прикладі).
^
означає Ctrl
.
Якщо у вас є два або більше відкритих вікон по горизонталі або по вертикалі і хочуть , щоб переключити їх все в іншу орієнтацію, ви можете використовувати наступне:
(перейти на горизонтальну)
:windo wincmd K
(перехід на вертикальний)
:windo wincmd H
Це ефективно переходити до кожного вікна індивідуально та використовувати ^WKабо ^WH.
Наступні колишні команди (повторно) розділять будь-яку кількість вікон:
:vertical ball
:ball
Якщо є приховані буфери, видача цих команд також зробить приховані буфери видимими.
:vert[ical] ball
в документі так :vert ball
само нормально і коротше.
:ball
зменшує 3 вертикальних вікна до 2 горизонтальних вікон, тоді як :vert ball
правильно відображає 3 горизонтальних вікна до 3 вертикальних.
Горизонтальний на вертикальний розкол
Ctrl+ Wдля команди вікна, а потім Shift+ Hабо Shift+L
Вертикальний на горизонтальний розкол
Ctrl+ Wдля команди вікна, а потім Shift+ Kабо Shift+J
Обидва рішення застосовуються тоді, коли існує лише два вікна.
Додайте обидва ці рядки до .vimrc
:
cabbrev help vert help
cabbrev h vert h
:vert[ical] {cmd}
завжди виконується cmd
у вертикально розділеному вікні.
Натхненний відповіддю Стіва, я написав просту функцію, яка перемикається між вертикальними та горизонтальними розбиттями для всіх вікон у поточній вкладці. Ви можете прив’язати його до відображення, як у останньому рядку нижче.
function! ToggleWindowHorizontalVerticalSplit()
if !exists('t:splitType')
let t:splitType = 'vertical'
endif
if t:splitType == 'vertical' " is vertical switch to horizontal
windo wincmd K
let t:splitType = 'horizontal'
else " is horizontal switch to vertical
windo wincmd H
let t:splitType = 'vertical'
endif
endfunction
nnoremap <silent> <leader>wt :call ToggleWindowHorizontalVerticalSplit()<cr>
if winnr() == 1 windo wincmd J windo wincmd k else windo wincmd J endif
і, if winnr() == 1 windo wincmd L windo wincmd h else windo wincmd L endif
сподіваюся, це має сенс.
Виконуючи підказку Марка Рушакова вище , ось моє відображення:
" vertical to horizontal ( | -> -- )
noremap <c-w>- <c-w>t<c-w>K
" horizontal to vertical ( -- -> | )
noremap <c-w>\| <c-w>t<c-w>H
noremap <c-w>\ <c-w>t<c-w>H
noremap <c-w>/ <c-w>t<c-w>H
Редагувати: використовувати Ctrl- w rдля заміни двох вікон, якщо вони не в належному порядку.