Я использую emacs. Я обнаружил, что иногда у меня есть 2 файла, разделенных на 2 окна.
Например: я открываю 1 файл, используя C-x C-f file1.c RET
и я разделил фрейм на два окна: C-x 3
Затем я открываю другой файл C-x C-f file2.c RET
Итак, у меня есть 2 файла:
окно 1 (слева) file1.c
окно 2 (справа) file2.c
Мне интересно, есть ли какая-нибудь комбинация клавиш для обмена файлами? Обычно мне нравится работать с левым окном, когда у меня есть 2 окна. Я знаю, что могу легко C-x oпереместить курсор в правое окно.
Однако мне просто интересно, могу ли я поменять файлы местами, чтобы они находились file2.c
в левом окне и file1.c
в правом окне?
Ответы:
Я использую для этого буферный ход . Теперь, если вы работаете с буфером с левой стороны, вызов «buf-move-right» заменит его буфером справа. Я думаю, это то, что ты хочешь.
источник
(defun win-swap () "Swap windows using buffer-move.el" (interactive) (if (null (windmove-find-other-window 'right)) (buf-move-left) (buf-move-right)))
win-swap
ним работал нормально, спасибо!C-S-up
иbuf-move-up
т. Д.Библиотека транспонирования кадров предоставляет довольно полный набор функций для переворачивания или поворота расположения окон в кадрах.
M-x
flop-frame
RET делает то, что нужно для этого конкретного вопроса.Следующие диаграммы взяты из комментария в библиотеке (и на ее странице EmacsWiki):
источник
flop-frame
работает только при вертикальном разделении окон, для горизонтального разделения необходимоflip-frame
. Однакоrotate-frame
работает независимо; одна команда для переключения буферов между двумя окнами, независимо от ориентации разделения :)В файле новостей Emacs 26.1 есть следующая запись:
Что, похоже, предлагает аналогичные функции,
crux-transpose-windows
но также может выполнять некоторые транспозиции высоты / ширины?источник
M-x window-swap-states
поменял местами буферы между двумя окнами.Если вы используете Prelude, вы можете просто использовать
C-c s
(prelude-swap-windows
). Из документации Prelude:источник
curl | sh
= wtf?), но суть действительно выглядит красиво и делает кучу вещей, которые я накатал сам.curl | sh
есть, я говорю: это зло.Я не знаю ни одной встроенной функции, делающей это.
Тем не менее, это не кажется слишком сложным, чтобы придумать немного элиспа для этого. Но дьявол кроется в деталях.
Примечательно, что это может не делать то, что вы хотите, в отношении того, где заканчивается курсор. Однако сначала вам нужно сказать, что вы хотите: p
источник
Если у вас есть прелюдия, вы можете использовать ace-window с
S-w
. Оттуда вы можете делать многие вещи, перечисленные в их документации .Так было бы
S-w m
источник
ace-swap-window
обязательноSPC w M
. Эта функция доступна по умолчанию.Следующий фрагмент кода может переключать буфер.
источник
Я бы умудрился открыть файл №2 в желаемом месте, т.е. после того, как вы нажмете cx 3, переместите курсор с помощью cx o перед переходом ко второму файлу.
источник