마우스없이 emacs에서 활성 미니 버퍼 프롬프트로 돌아가는 방법


36

emacs에서는 때때로 파일을 찾거나 버퍼를 전환하거나 미니 버퍼에서 무언가를 수행하는 도중에 어떤 이유로 든 다른 곳을 클릭합니다. 다시 돌아 가면 미니 버퍼 프롬프트를 다시 활성화하는 유일한 방법은 미니 버퍼 내부를 클릭하는 것입니다. 미니 버퍼는 얇은 영역이기 때문에 성가신 일입니다. 마우스를 사용하지 않고 활성 미니 버퍼 프롬프트로 다시 전환 할 수있는 방법이 있습니까?

답변:


25

이것은 당신이 원하는 것을 할 것입니다. 선택한 키에 바인딩 :

(defun switch-to-minibuffer-window ()
  "switch to minibuffer window (if active)"
  (interactive)
  (when (active-minibuffer-window)
    (select-frame-set-input-focus (window-frame (active-minibuffer-window)))
    (select-window (active-minibuffer-window))))
(global-set-key (kbd "<f7>") 'switch-to-minibuffer-window)

2
여러 개의 프레임이있는 경우 (select-frame-set-input-focus (window-frame (active-minibuffer-window)))앞에 프레임을 추가 해야합니다 select-window.
dshepherd

@dshepherd Elisp 라인을 삽입 한 후에도 풍부한 기능이 한 프레임에서만 잘 작동한다는 것을 확인할 수 있습니다. 감사.
dimitarvp

@dshepherd 감사합니다. 코드를 적절하게 업데이트했습니다.
Trey Jackson

23
C-x o 

필요에 따라 반복하십시오.

Cx o는`C 소스 코드 '에 대화 형 내장 함수 인 other-window 명령을 실행합니다.

창을 순환하지 않으려면 init 파일에 함수를 추가하고 키에 바인딩하면됩니다. 이와 같은 것이 효과가있을 수 있습니다.

(defun select-minibuffer ()
 "Make the active minibuffer the selected window."
 (interactive)
 (when (active-minibuffer-window)
   (select-window (active-minibuffer-window))))

1
왜 그렇게 포함하고 싶 RET습니까? 미니 버퍼에있는 모든 것을 자동으로 수락합니다 (단일 C-x o미니 버퍼로 전환 한 경우). 일반적으로 C-x o(Emacs 용어로) 프레임에 여러 개의 창이 열려 있으면 (일반 GUI 용어로 : 창의 여러 창) 여러 번 사용해야 할 수도 있습니다 .
Chris Johnsen

네가 옳아. 내 잘못이야.
Richard Hoskins

모든 창문을 통해 자전거를 타지 않고도 미니 버퍼로 직접 이동할 수있는 방법이 있습니까? other-window현재 창이 미니 버퍼 가 될 때까지 루프를 작성해야합니까 ?
Ryan Thompson

6

다른 옵션은 switch-window

나는 그것이 매우 유용한 패키지라는 것을 알았습니다 : 그것은 당신이 시각적으로 어떤 Emacs 창으로 빠르게 이동할 수있게 해줍니다 (그리고 나는 Emacs에서 많은 열린 창을 사용합니다).

그러나 미니 버퍼가 활성화되어 있으면 미니 버퍼로 이동할 수도 있습니다.

여기에 이미지 설명을 입력하십시오

도움이 되길 바랍니다.


1
관련 패키지는 swap-buffers현재 버퍼를 다른 창에있는 것과 바꾸는 데 동일한 방법을 사용합니다.
Pyrocrasty

0
;; faster switching between windows in the same frame
(windmove-default-keybindings)

위의 두 줄의 코드를 .emacs.el에 추가하면 미니 버퍼뿐만 아니라 간단하고 효율적인 이동이 가능하며 Shift-Arrow를 사용하여 Emacs 프레임의 다른 모든 창을 탐색 할 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.