[emacs] Emacs, 이전 창으로 전환

Emacs C-x o에서 다음 창으로 이동합니다.

Emacs의 이전 창으로 이동하는 키보드 매크로는 무엇입니까?



답변

그건 C-- C-x o

즉, C-x o인수가 -1입니다. 에서 C-u와 같이와 명령 사이에 숫자 인수를 삽입하여 이동할 창 수를 지정할 수 있습니다 C-u 2 C-x o. ( C--는의 바로 가기입니다. C-u - 1)


답변

지오메트리를 기반으로 선택한 창으로 이동할 수있는 windmove를 사용해 볼 수도 있습니다. Cx 화살표 키를 사용하여 창을 변경하려면 .emacs 파일에 다음이 있습니다.

(global-set-key (kbd "C-x <up>") 'windmove-up)
(global-set-key (kbd "C-x <down>") 'windmove-down)
(global-set-key (kbd "C-x <right>") 'windmove-right)
(global-set-key (kbd "C-x <left>") 'windmove-left)


답변

개인적으로 사용하는 것을 선호합니다 window-number.el

다른 창을 선택하려면 Ctrlx, Ctrlj n을 사용하십시오.

여기서 N은 캡쳐 화면에 나타낸 바와 같이, 윈도우의 수, 각 프로그램 윈도우 그것의 수의 modeline 줄이다.

window-number.el을 다운로드하고 emacs로드 경로에 배치하고 다음을 사용하십시오..emacs

 (autoload 'window-number-mode "window-number"
   "A global minor mode that enables selection of windows according to
 numbers with the C-x C-j prefix.  Another mode,
 `window-number-meta-mode' enables the use of the M- prefix."
   t)

switch-window.el창에서 큰 숫자를 제공하는 비슷한 모드 가 있습니다 … (숫자를 누르면 창을 전환하고 디스플레이를 되돌립니다.)


(출처 : tapoueh.org )


답변

여러 개의 emacs 창 (> 3)을 많이 사용하고 몇 가지 키 입력을 저장하고 싶다면 이것을 init 파일에 추가하면 더 나을 것입니다.

(defun frame-bck()
  (interactive)
  (other-window-or-frame -1)
)
(define-key (current-global-map) (kbd "M-o") 'other-window-or-frame)
(define-key (current-global-map) (kbd "M-O") 'frame-bck)

이제 Mo로 창문을 빠르게 순환하십시오.


답변

여기에는 매우 훌륭하고 완전한 답변이 있지만 최소한의 방식으로 질문에 대답하려면 다음과 같이하십시오.

 (defun prev-window ()
   (interactive)
   (other-window -1))

 (define-key global-map (kbd "C-x p") 'prev-window)


답변

@Nate의 아이디어를 기반으로하지만 창 사이의 역방향 순환을 지원하도록 약간 수정되었습니다.

;; Windows Cycling
(defun windmove-up-cycle()
  (interactive)
  (condition-case nil (windmove-up)
    (error (condition-case nil (windmove-down)
         (error (condition-case nil (windmove-right) (error (condition-case nil (windmove-left) (error (windmove-up))))))))))

(defun windmove-down-cycle()
  (interactive)
  (condition-case nil (windmove-down)
    (error (condition-case nil (windmove-up)
         (error (condition-case nil (windmove-left) (error (condition-case nil (windmove-right) (error (windmove-down))))))))))

(defun windmove-right-cycle()
  (interactive)
  (condition-case nil (windmove-right)
    (error (condition-case nil (windmove-left)
         (error (condition-case nil (windmove-up) (error (condition-case nil (windmove-down) (error (windmove-right))))))))))

(defun windmove-left-cycle()
  (interactive)
  (condition-case nil (windmove-left)
    (error (condition-case nil (windmove-right)
         (error (condition-case nil (windmove-down) (error (condition-case nil (windmove-up) (error (windmove-left))))))))))

(global-set-key (kbd "C-x <up>") 'windmove-up-cycle)
(global-set-key (kbd "C-x <down>") 'windmove-down-cycle)
(global-set-key (kbd "C-x <right>") 'windmove-right-cycle)
(global-set-key (kbd "C-x <left>") 'windmove-left-cycle)


답변

@Nate, @aspirin 및 @Troydm의 답변에 추가하기 위해 windmove 명령을 선택한 키 조합에 바인딩하기로 결정한 경우 매우 유용한 추가 기능이 있습니다.

(setq windmove-wrap-around t)

기본 구성을 사용하면 존재하지 않는 창으로 이동하려고 할 때 오류가 발생하여 잠시 후 짜증이납니다. 그러나 windmove-wrap-around가 설정된 경우, 예를 들어 프레임 하단에서 벗어나려고하면 대신 프레임의 맨 위 창을 선택합니다. 이것은 당신에게 더 직관적 인 행동 일 수 있습니다.