Как изменить область разделения в Emacs?

В Vim я могу перемещать раскол. Например, если мое окно было разделено на два по горизонтали, а верхнее разделение было разделено вертикально (всего три разбиения), я мог бы переместить верхний правый раскол вправо, чтобы стать вертикальным разделом, занимающим все вертикальное пространство.

Возможна ли такая перегруппировка?

Обновление: Я знаю, что изменение размера возможно, но я хочу двигаться. Я чувствую, что это не поддерживается Emacs.

Ответ 1

Вас может заинтересовать C-x +, если у вас более двух окон. Он равномерно выравнивает окна на раме. Это удобно, например, когда вы выполняете две C-x 2 в строке и хотите, чтобы окна занимали одно и то же пространство на фрейме.

Ответ 2

Нет, не по умолчанию. То, что вы должны играть, в основном C-x 0, C-x 1 и т.д. Посмотрите Emacs Wiki для расширений, которые могут или не могут делать что вы ищете.

Ответ 3

FWIW, если вы работаете в графическом интерфейсе, то вы можете быстро и легко перенастроить размеры окон с помощью мыши. Это не совсем то же самое, что вы просите, но может быть удобной альтернативой в некоторых случаях.

Вы можете щелкнуть любую неактивную область линии режима (например, имя буфера), а затем перетащить ее вверх или вниз.

Перетаскивание из стороны в сторону более странно. Вы должны щелкнуть по точной границе между двумя линиями режима, а затем вы можете перетащить влево/вправо.

В вашем конкретном примере я не верю, что это поддерживается. AFAIK вы можете только реорганизовать разрывы окна в пределах своего существующего "родительского" окна (верхний раскол в этом примере). Чтобы верхнее правое окно заполнило вертикальное пространство, вы либо удалите нижнее окно с помощью C-x 0, либо используйте C-x 1, чтобы удалить все остальные окна, а затем повторно разбить их желаемым образом.

(Тангенциально, я часто думал, что пользовательская библиотека для "поворота" раскола окна была бы хорошей вещью.)

Ответ 4

Я считаю, что команды изменения размера окна встроены в window.el, from emacswiki функции, которые вы хотите задокументировать:

shrink-window-horizontally  ; C-x {
enlarge-window-horizontally ; C-x }
enlarge-window              ; C-x ^
shrink-window               ; not bound on my system

Комментарии - это то, что они привязаны к моей системе, но я не знаю, сделал ли я это сам.

Все они принимают префиксный аргумент, количество строк для увеличения/сжатия. Последние два по умолчанию по вертикали.

Ответ 5

Насколько я знаю, вы не можете создать новое окно, которое будет использовать длину или ширину экрана из уже разбитого окна в этом направлении. Буферы остаются открытыми, если вы закрываете окна, чтобы удалить окна, а затем разбить их в нужной конфигурации. Затем измените, какой буфер отображается в окне, в котором вы находитесь, нажав кнопку C-x влево или вправо.

Я должен добавить, что этот ответ относится к "vanilla" emacs, возможно, есть способ сделать то, что OP спрашивает, действительно ли вы этого хотите. Это emacs в конце концов.