Когда я работаю с VIM, мне всегда видно несколько окон. Иногда мне хотелось бы иметь простой способ поменять местами эти окна. Есть ли какой-нибудь плагин, макрос и т. Д., Чтобы упростить задачу? Кстати, я использую MiniBufExplorer.
123
Ответы:
В него встроено несколько полезных команд, которые дают вам определенный контроль, но он не исчерпывающий. Основные из них:
Ctrl- W, r(т.е. удерживать CTRL, нажимать W, отпускать CTRL, нажимать r) - который вращает окна (первое окно становится вторым, второе становится третьим и т. д.)
Ctrl- W, x- поменять местами текущее окно на следующее
Ctrl- W, Shift- H- переместить это окно в крайнее левое положение
Ctrl- W, Shift- K- переместить это окно наверх
(и аналогично для Ctrl- W, Shift- Jи Ctrl- W, Shift- L). Видеть:
Чтобы получить больше информации.
источник
Я написал и использую следующий фрагмент кода в моем vimrc для копирования и вставки окон Vim.
Это определяет, например, следующие ярлыки:
<c-w>y
: "Дергает окно", т.е. сохраняет номер буфера в текущем окне в глобальной переменной.<c-w>pp
: «Помещает окно на место текущего окна», т.е. считывает номер буфера, сохраненный ранее, и открывает этот буфер в текущем окне. Он также хранит номер буфера, который был в текущем окне.Если под «заменой этих окон местами» вы имеете в виду «открытие буфера в окне A в окне B, и наоборот, без изменения положения окон», вы можете использовать следующую последовательность клавиатуры для смены окон:
<c-w>y
(выдергивая номер буфера)<c-w>pp
(вставка буфера)<c-w>pp
(вставка буфера снова)Работает только в Vim> = 7.0.
источник
Примерно в то же время я задал аналогичный вопрос : мне нужен был способ менять местами окна, не изменяя произвольно сложную компоновку. Я закончил тем, что сделал плагин vim из одного из предложенных решений. Он называется WindowSwap.vim ; установите его с помощью предпочитаемого вами менеджера плагинов vim и попробуйте.
С WindowSwap.vim вы просто
<Leader>yw
дергать окно.<Leader>pw
чтобы вставить это окно, заменив его положением первого.Комбинации клавиш, конечно, можно настроить в соответствии с вашими предпочтениями.
источник
Как
<c-w>r
или<c-w>x
имеет ограничение, заключающееся в том, что вы не можете вращать или менять окна, когда вертикальное и горизонтальное разделение окон смешано. И<c-w>H
может вызвать изменение макета окна сверх ваших ожиданий, особенно когда у вас много окон.Таким образом, вы можете поработать, чтобы удовлетворить ваши потребности в переключении окон / буферов. Вот пример переключения текущего окна на верхнее левое окно (обычно я делаю его максимально развернутым по вертикали):
источник
На мой взгляд, http://vimcasts.org/episodes/working-with-windows/ дает идеальный ответ на этот вопрос. Вкратце:
ctrl-w w
переключаться между открытыми окнамиctrl-w h
сфокусируйте окно слеваctrl-w j
сфокусировать окно внизctrl-w k
сфокусируйте окно вверхctrl-w l
сфокусируйте окно вправоctrl-w r
повернуть все окнаctrl-w x
обмениваться текущим окном со своим соседомctrl-w H
переместить текущее окно в крайнее левое положениеctrl-w J
переместить текущее окно внизctrl-w K
переместить текущее окно наверхctrl-w L
переместить текущее окно в крайнее правое положениеисточник