Скажи следующее это текущая структура моего окна:
+ ----- + ---------------------------- | | | A | | | + ----- + | | | Б |
Порядок A и B не совсем естественен. Было бы лучше, если бы B был на вершине.
Однако, если я уйду <C-w>K
, B будет самой верхней частью всех окон, а это не то, что я хочу. Как я могу поставить B над A, но не над любым другим окном, которое уже над A?
И если два окна разделены по вертикали, как я могу изменить их по горизонтали?
split
vim-windows
Джейсон Ху
источник
источник
Ответы:
Чтобы поменять местами две части разделенного окна, просто выполните:
<C-w> <C-r>
источник
:h CTRL-W_CTRL-R
:The second window becomes the first one, the third one becomes the second one, etc.
Таким образом, если у вас есть 3 разделения, курсор на нижнем и попадании<c-w><c-r>
в 3-е окно будет поверх двух других, что не соответствует тому, что запрашивал OP:How can I put B above A, but not above any other window that is already above A?
Чтобы поменять местами
window
, эффект эквивалентен обмену буферов, которые показывают эти два окна.Например, если окно A имеет буфер 2, а окно B имеет буфер 8, вам нужно перейти в окно A, выбрать буфер 8, затем в окно B, выбрать буфер 2.
Эта идея вдохновила меня на написание сценария - и она уже есть в моем собственном наборе инструментов.
Код функции:
:call WinBufSwap()
Это меняет местами буферы в двух предварительно выбранных окнах, оставляя курсор в исходном окне.
Ключевым моментом является выбор двух желаемых окон, которые нужно поменять местами, так как это необходимо для указания Vim, с какими из них работать.
источник
(
index.txt
раздел 2.2, «Команды окна»)Если A является текущим окном, то следующим будет B, поэтому вам нужно только
<C-w> x
Если B является текущим окном (и есть еще несколько окон ниже), то вам сначала нужно перейти к A, а затем обменять:
<C-w> k <C-w> x
источник
Другой альтернативой замене окон или замене буферов является маркировка позиций (с использованием заглавных букв ) в ваших файлах и открытие этих отметок в окнах по вашему выбору.
Например, если у меня есть два файла, file_A и file_B :
mA
mB
'A
'B
.Преимущество этого метода состоит в том, что если по какой-то причине вы разбили свою панель более одного раза, и нет четкой логики для их замены, как, например, если вы хотите поменять панели в 12 и 7 часах, вы можете ' просто вращайте окна, но вы можете легко поменять их местами.
источник
Вы можете поменять буферы между двумя окнами с помощью следующей функции:
Теперь, чаще всего, замена буферов технически будет действовать как замена окон. Поскольку вы не отслеживаете окна вручную, вы отслеживаете, какое окно содержит какой буфер. Таким образом, функция выше поможет вам в большинстве случаев.
источник