Como voltar para um prompt minibuffer ativo no emacs sem o mouse


36

No emacs, às vezes eu estarei no meio de encontrar um arquivo ou alternar buffers ou fazer algo no minibuffer, e clicarei em outro lugar por algum motivo. Quando eu volto, a única maneira de ativar o prompt do minibuffer novamente é clicar dentro do minibuffer, o que é irritante porque é uma área fina. Existe alguma maneira de voltar ao prompt do minibuffer ativo sem usar o mouse?

Respostas:


25

Isso fará o que você quiser. Vincule à chave de sua escolha:

(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
Se você tiver vários quadros, precisará adicionar (select-frame-set-input-focus (window-frame (active-minibuffer-window)))antes do select-window.
dshepherd

@dshepherd Posso confirmar que, depois de inserir sua linha Elisp, a função enriquecida está funcionando bem com apenas um quadro também. Obrigado.
Dimitarvp

@dshepherd Obrigado, atualizei o código adequadamente.
Trey Jackson

23
C-x o 

Repita conforme necessário.

Cx o executa o comando other-window, que é uma função interna interativa no `código-fonte C '.

Se você não deseja percorrer o Windows, você pode adicionar uma função no seu arquivo init e vinculá-la a uma chave. Algo assim pode funcionar:

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

11
Por que você gostaria de incluir RETassim? Ele aceitaria automaticamente o que estava no minibuffer (assumindo que um único C-x ocomutasse para o minibuffer). Geralmente, pode ser necessário usar C-x ovárias vezes se houver (na linguagem do Emacs) várias janelas abertas no quadro (em termos normais da GUI: vários painéis na janela).
precisa

Você está certo. Minha culpa.
Richard Hoskins

Existe alguma maneira de chegar diretamente ao minibufer sem potencialmente percorrer todas as janelas? Devo apenas escrever um loop que faz other-windowaté que a janela atual seja minibuffer?
Ryan C. Thompson

6

Outra opção é usar switch-window

Acho que é um pacote realmente útil: permite que você se mova rapidamente para qualquer janela do Emacs, visualmente (e eu uso muitas janelas abertas no Emacs).

Mas acabei de descobrir que também permite que você mude para o minibuffer, se estiver ativo:

insira a descrição da imagem aqui

Espero que ajude.


11
Um pacote relacionado é o swap-buffersque usa o mesmo método para trocar o buffer atual por outro em outra janela.
Pyrocrasty 16/05

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

A adição de duas linhas de código acima ao .emacs.el permitirá a movimentação simples e eficiente, não apenas para minibuffer, mas também para navegar em todas as outras janelas no quadro do Emacs usando Shift-Arrow .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.