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.