Vim: Перемістити вікно вліво / вправо?


215

У Vim, чи можна «перемістити» вікно вліво чи вправо? Наприклад, схожий на <c-w> rабо <c-w> x, але вліво / вправо замість вгору / вниз?

Наприклад, якщо у мене є такий макет:

+---+---+---+
|   |   +---+
| A +---+---+
|   |   |   |
+---+---+---+

Я хотів би перетворити це на це:

+---+---+---+
|   |   +---+
+---+ A +---+
|   |   |   |
+---+---+---+

Що важко / дратує <c-w> {H,J,K,L}.

Відповіді:


425

Ctrl w надає "командний режим Windows", що дозволяє наступні модифікатори:

  • Ctrl w+ R- Поворот вікна вгору / вліво.

  • Ctrl w+ r- Поворот вікна вниз / вправо.

Ви також можете використовувати "командний режим Windows" за допомогою клавіш навігації для зміни положення вікна:

  • Ctrl w+ L- Перемістіть поточне вікно в крайній правий край

  • Ctrl w+ H- Перемістіть поточне вікно в крайній лівий край

  • Ctrl w+ J- Перемістіть поточне вікно до "самого низу"

  • Ctrl w+ K- Перемістіть поточне вікно до "самого верху"

Ознайомтеся з :help window-movingдодатковою інформацією


2
<c-w> rобертається лише вертикально.
Девід Волвер

10
@David Wolever, у цьому випадку вам потрібно використовувати великі літери, наприклад: Ctrl-W + Shift-L. Я думаю, що це може бути те, що ви шукаєте.
Рікардо Валеріано

@David - я просто перевірив це, і <cw> r працював горизонтально для мене.
ostler.c

3
@ ostler.c створіть вертикальний розкол, а потім створіть горизонтальний розкол в одному з стовпців. Тепер використовуйте <cw> r, і він циклізує два вікна в межах одного вертикального розколу.
Шев

1
@ nn0p ні, вони переміщують вікна. <cw> h перемістить курсор у наступне вікно ліворуч, а <cw> H перемістить поточне вікно (разом із курсором) у крайній лівий край.
MarSoft

60

Цей для мене найбільш корисний (і, мабуть, правильна відповідь на питання):

  • Ctrl W+ xАБО Ctrl W+ Ctrl x- Повертає поточне зосереджене вікно найближчим вікном праворуч.

дуже корисно, коли ви знаходитесь посередині панелей та хочете поміняти місцями з правою. Дякую за це!
Даніель Андрій Мінка

8

Ви хочете перенести саме вікно або просто положення курсору?

Поруч із обертанням або їздою на велосипеді, як ви вже згадували, можна лише перемістити саме вікно в крайній верх, вниз, вліво або вправо, відповідно:

^W K
^W J
^W H
^W L

Я не думаю, що існує стандартний спосіб переміщення вікна на одне місце праворуч.


1
Я хочу перемістити вікна, а не курсор.
Девід Волвер

1
Тоді це настільки, наскільки ви можете піти з командами vim window, якщо це вам було корисно, будь ласка, позначте його як рішення :-)
Bitterzoet

2
Я б заперечував коментар @Bitterzoet, якби міг. Дивіться відповіді вище
Натан

1

Насправді, схоже, vim не може цього зробити зі стандартними картами ключів. У документації йдеться про те, що команди ^ WK, J, H і L працюють, створюючи розділення та відкриваючи буфер у теперішньому положенні, тому я записав функцію до того ж: Приховати буфер, переміститися вліво, розділити, а потім відкрити початковий буфер:

" Rotate a window horizontally to the left
function! RotateLeft()
    let l:curbuf = bufnr('%')
    hide
    wincmd h
    split
    exe 'buf' l:curbuf
endfunc

" Rotate a window horizontally to the right
function! RotateRight()
    let l:curbuf = bufnr('%')
    hide
    wincmd l
    split
    exe 'buf' l:curbuf
endfunc

-6
  • ctrl + h перемістити курсор до наступного вікна (праворуч)

  • ctrl + l перемістити курсор до попереднього вікна (зліва)

про додаткову інформацію, будь ласка, зверніться до: :help window-moving


3
Неправильно. Ctrl+h/lне є стандартними прив'язками для віконної навігації (хоча вони, звичайно, можуть бути налаштовані і пропонуються деякими плагінами). І це все одно не відповідає на початкове запитання.
MarSoft
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.