Cómo volver a un indicador de minibúfer activo en emacs sin el mouse


36

En emacs, a veces estaré en el medio de encontrar un archivo o cambiar buffers o hacer algo en el minibúfer, y haré clic en otro lugar por alguna razón. Cuando regrese, la única forma de volver a activar el indicador del minibúfer es hacer clic dentro del minibúfer, lo cual es molesto porque es un área delgada. ¿Hay alguna forma de volver a un indicador de minibúfer activo sin usar el mouse?

Respuestas:


25

Esto hará lo que quieras. Enlace a la clave de su elección:

(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
Si tiene varios marcos, debe agregarlos (select-frame-set-input-focus (window-frame (active-minibuffer-window)))antes de select-window.
dshepherd

@dshepherd Puedo confirmar que después de insertar su línea Elisp, la función enriquecida también funciona bien con un solo cuadro. Gracias.
dimitarvp

@dshepherd Gracias, he actualizado el código apropiadamente.
Trey Jackson

23
C-x o 

Repita según sea necesario.

Cx o ejecuta el comando other-window, que es una función integrada interactiva en el 'código fuente C'.

Si no desea recorrer las ventanas, puede agregar una función en su archivo de inicio y vincularla a una tecla. Algo como esto podría funcionar:

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

1
¿Por qué querrías incluir RETasí? Aceptaría automáticamente lo que haya en el minibúfer (suponiendo que un solo C-x oconmutador se haya cambiado al minibúfer). En general, es posible que necesite usar C-x ovarias veces si hay (en el lenguaje de Emacs) múltiples ventanas abiertas en el marco (en términos normales de GUI: múltiples paneles en la ventana).
Chris Johnsen

Tienes razón. Mi error.
Richard Hoskins el

¿Hay alguna manera de llegar directamente al minibúfer sin pasar potencialmente por todas las ventanas? ¿Debo escribir un bucle que funcione other-windowhasta que la ventana actual sea minibúfer?
Ryan C. Thompson

6

Otra opción es usar switch-window

Considero que es un paquete realmente útil: le permite moverse rápidamente a cualquier ventana de Emacs, visualmente (y uso muchas ventanas abiertas en Emacs).

Pero acabo de descubrir que también le permite pasar al minibúfer, si está activo:

ingrese la descripción de la imagen aquí

Espero eso ayude.


1
Un paquete relacionado es el swap-buffersque usa el mismo método para intercambiar el búfer actual con el de otra ventana.
pirócrata

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

Agregar dos líneas de código anteriores a .emacs.el permitirá un movimiento simple y eficiente, no solo al minibúfer, sino también a navegar por todas las demás ventanas en el marco de Emacs usando Shift-Arrow .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.