분할 화면 emacs 창의 크기를 변경하는 방법?


172

emacs를 수평으로 분할했습니다-상단에 Perl 코드를 편집하고 있으며 하단은 쉘입니다. 기본적으로 emacs는 두 개의 창 크기를 동일하게하지만 쉘 버퍼를 작게하고 싶습니다 (크기의 절반입니까?). 어떻게 할 수 있을지 궁금했습니다.

답변:


294

마우스로 창 크기를 드래그 할 수 있습니다.

그렇지 않으면 '활성'이 아닌 모드 행 (버퍼 이름이 안전하거나 사용하지 않는 영역 오른쪽)을 아무 곳이나 클릭하면 위 또는 아래로 끌 수 있습니다.

좌우로 드래그하려면 두 모드 선이 결합되는 지점을 매우 정확하게 클릭해야합니다.

C-x -( shrink-window-if-larger-than-buffer)는 내용에 맞게 창을 축소합니다.

C-x +( balance-windows)는 창을 같은 높이와 너비로 만듭니다.

C-x ^( enlarge-window)는 높이를 1 줄 또는 접두사 arg 값만큼 증가시킵니다. 음수 인수는 창을 축소합니다. 예를 들어 C-- C-1 C-6 C-x ^16 행만큼 줄어 듭니다 C-u - 1 6 C-x ^.

에 대한 기본 바인딩은 없습니다 shrink-window.

C-x }( enlarge-window-horizontally)도 수평으로 수행합니다.
C-x {( shrink-window-horizontally)도 기본적으로 바인딩됩니다.

이 명령 중 하나를 사용하여 repeat( C-x z시작 및 z계속 반복하기) 원하는 크기로 쉽게 얻을 수 있습니다.

정기적으로 특정 값 으로이 작업을 수행하려는 경우 키보드 매크로를 기록하거나 다음과 같은 것을 사용할 수 있습니다
(global-set-key (kbd "C-c v") (kbd "C-u - 1 6 C-x ^"))

아니면 이거:
(global-set-key (kbd "C-c v") (kbd "C-x o C-x 2 C-x 0 C-u - 1 C-x o"))

smidgen hacky는 어느 것이 좋을까요?

(defun halve-other-window-height ()
  "Expand current window to use half of the other window's lines."
  (interactive)
  (enlarge-window (/ (window-height (next-window)) 2)))

(global-set-key (kbd "C-c v") 'halve-other-window-height)

접선으로, 나는 또한 winner-mode창 구성에 대한 변경 사항을 반복적으로 '실행 취소'할 수있는 것을 좋아 합니다 (변경 사항이 창의 C-c left크기 / 숫자 / 배열인지 또는 버퍼가 표시되는지 여부). C-c right최신 구성으로 돌아갑니다. 세계적으로 설정(winner-mode 1)


3
굉장하고 정확하게 내가 원하는 것! 정말 고맙습니다!
Steve

1
+1 : '실행 취소'우승자 모드 팁에 감사합니다. btw, 내 경우에는 버퍼 이름을 클릭하면 다음 버퍼가 열립니다. 그러나 마우스 커서 모양을보고 크기를 조정할 수있는시기를 쉽게 알 수 있습니다.
jfs

34

나는 이것을 내 안에 넣었다 .emacs.

(global-set-key (kbd "<C-up>") 'shrink-window)
(global-set-key (kbd "<C-down>") 'enlarge-window)
(global-set-key (kbd "<C-left>") 'shrink-window-horizontally)
(global-set-key (kbd "<C-right>") 'enlarge-window-horizontally)

먼저 두 사람은 맥 OSX 10.9.1에서 이맥스 24.3.1에서 나를 위해 작동하지 않습니다
오스카 페르손

1
@OskarPersson 전역 단축키와 충돌 할 수 있습니다. 환경 설정에서 찾거나 컨트롤을 caps lock (내 방식)으로 다시 매핑하면 작동합니다.
wilbeibi

나는 같은 문제가 있었고 @Wilbeibi가 설명 한 것처럼 C- 왼쪽 및 C- 오른쪽이 OS X 시스템 환경 설정의 미션 컨트롤 단축키와 충돌한다는 것을 알았습니다.
Doug Richardson

1
이러한 키는 이미 정의되어 있으며, 먼저 설정 (global-set-key (kbd "<C-up>") nil)하기 전에 키를 설정 해제 하지만 M-left대신 사용하는 것이 좋습니다.
Mauricio Cortazar

@MauricioCortazar 나는 몇 년 동안 Emacs를 사용하지 않았습니다. 이 답변은 지금 적용되지 않을 수 있습니다. 자유롭게 업데이트하십시오.
wilbeibi 2014

14

emacs 도움말 문서를 사용해 봅시다.

C-h a

그런 다음 "확대"또는 "창"을 입력하십시오.

원하는 것을 찾을 수 있습니다.

즐겨!


C-h사용할 수없는 환경에서 작업하고 있을 수 있습니다. 그럼 뭐야?
데렐 Durrett

1
당신이 바인딩 표준 도움말지도를 사방 한 경우에, 당신은 확실히 당신이 그것을 사방 한 것을 알고 있어야 . (실패 <f1>하면 다른 표준 도움말 맵 바인딩을 시도 하십시오 .)
phils

6

C-x o크기를 확장하려는 창으로 거기서부터 C-x ^확장합니다.


3
바인딩이 다른 경우 (광산) 명령은 enlarge-window입니다. 추가 팁은 접두사 arg를 사용하여 확장 량을 제어하는 ​​것입니다.
Joseph Gay

대박! 대단히 감사합니다!
Steve

6

C-x ^양수 음수 인수를 취합니다 . 특히 커서가 현재 4 줄씩있는 창을 축소하려면을 누릅니다 C-u -4 C-x ^.


2

이것은 당신이 찾고있는 정확한 대답은 아니지만의 기능을 찾을 때이 질문에 걸려 넘어 졌으므로 spacemacs완전성을 위해 답변을 작성하겠습니다.

옵션은 사용하는 것입니다 <SPC> + w + .(바닐라 스페이스 맥에서 작동합니다)

그러면 []{}세부 수준에서 크기를 조정 하는 데 사용할 수있는 임시 창이 열립니다 .

Cx 나 마우스가 필요 없습니다 ...

창 조작 과도 상태


일반 이맥스에 비슷한 것이 있다면?
krokodil

어쩌면 거기에 없을 수도 있습니다. 그래서 Drew가 처음에이 질문을 한 이유는 ...
Yesh

0

같은 질문이 있습니다. 여기 내 해결책이 있습니다.
먼저 새로운 기능을 정의합니다.

(defun buffer-resize ()
  (delete-other-windows)
  (split-window-vertically (floor (* 0.68 (window-height))))
  (other-window 1)
  (switch-to-buffer buf)
  (other-window 1))

예를 들어, 버퍼에서 run-scheme을 실행하고 싶어서 다시 작성합니다.
그리고 함수가 앞에서 정의 된 정의는 다음과 같습니다.

(defun run-scheme-here ()
  "Run a new scheme process at the directory of the current buffer.
   If a process is already running, switch to its buffer."
  (interactive)
  (let* ((proc (format "scheme: %s" default-directory))
         (buf (format "*%s*" proc)))
    (unless (comint-check-proc buf)
      (let ((cmd (split-string scheme-program-name)))
        (set-buffer
         (apply 'make-comint-in-buffer proc buf (car cmd) nil (cdr cmd)))
        (inferior-scheme-mode)
        (buffer-resize)))
    (pop-to-buffer buf)))

이제 입력하면 Mx run-scheme-here 버퍼 크기가 조정됩니다!
그리고 이것이 도움이되기를 바라는 구성 파일입니다. https://github.com/judevc/dotfiles/blob/master/.emacs.d/scheme-conf.el


3
귀하의 링크가 끊어졌습니다 :(
Ciprian Tomoiagă
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.