Предположите, что у меня есть некоторое произвольное расположение разделений в энергии.
____________________
| one | two |
| | |
| |______|
| | three|
| | |
|___________|______|
Есть ли способ подкачать one
и two
и поддержите то же расположение? Это просто в этом примере, но я ищу решение, которое поможет для более сложных макетов.
Я предполагаю, что должен быть более ясным. Моим предыдущим примером было упрощение фактического примера использования. С фактическим экземпляром:
Как я мог подкачать какие-либо два из тех разделений, поддержав то же расположение?
Я поместил решение sgriffin в плагин Vim, который можно установить легко! Установите его со своим любимым сменным менеджером и дайте ему попытку: WindowSwap.vim
Начиная с этого:
____________________
| one | two |
| | |
| |______|
| | three|
| | |
|___________|______|
Сделайте «три» активным окном, затем введите команду ctrl + w J . Это перемещает текущее окно так, чтобы заполнить нижнюю часть экрана, оставляя вас с:
____________________
| one | two |
| | |
|___________|______|
| three |
| |
|__________________|
Теперь сделайте активным окно «один» или «два», затем введите команду ctrl + w п . Это «поворачивает» окна в текущей строке, оставляя вас с:
____________________
| two | one |
| | |
|___________|______|
| three |
| |
|__________________|
Теперь сделайте «два» активным окном и введите команду ctrl + w H . Это перемещает текущее окно, чтобы заполнить левую часть экрана, оставляя вас с:
____________________
| two | one |
| | |
| |______|
| | three|
| | |
|___________|______|
Как видите, маневр - это что-то вроде перемешивания. С 3 окнами это немного похоже на одну из головоломок в стиле «игра в плитку». Я не рекомендую пробовать это, если у вас 4 или более окон - лучше закрыть их, а затем снова открывать в желаемых положениях.
Я сделал скринкаст, демонстрирующий , как работать с разделенными окнами в Vim .
Взгляните на : h ctrl-w_ctrl-x
и / или : h ctrl-w_ctrl-r
. Эти команды позволяют вам менять или вращать окна в текущем макете.
Изменить: На самом деле, в данной ситуации это не сработает, потому что поменяется местами только в текущем столбце или строке. Вместо этого вы можете перейти в каждое из окон и выбрать целевой буфер, но это довольно многословно.
Рэнди прав в том, что CTRL-W x
не хочет менять местами окна, которые не находятся в одной колонке/строке.
Я обнаружил, что клавиши CTRL-W HJKL
наиболее полезны при работе с окнами. Они вытесняют текущее окно из его текущего местоположения и заставляют его занять весь край, указанный направлением нажатой клавиши. Подробнее см. в :help window-moving
для получения дополнительной информации.
Для вашего примера выше, если вы начнете в окне "один", это сделает то, что вы хотите:
CTRL-W K # moves window "one" to be topmost,
# stacking "one", "two", "three" top to bottom
CTRL-W j # moves cursor to window "two"
CTRL-W H # moves window "two" to be leftmost,
# leaving "one" and "three" split at right
Для удобства вы можете назначить нужные вам последовательности сопоставлениям клавиш (см. :help mapping
).