¿Mejor navegación de ventanas en Emacs?

Resuelto fantasticsid asked hace 13 años • 5 respuestas

Cuando divido la ventana en emacs varias veces (en la terminal), toda la pantalla se divide en varias partes con una disposición jerárquica. En vim es fácil cambiar entre ventanas de forma intuitiva con Control-w + (h,j,k,l), pero en Emacs sólo puedo usar Control-x + o para cambiar a "la otra ventana", lo que probablemente requeriría varias iteraciones para finalmente llegar a la ventana que pretendo. Me pregunto si existe una manera mejor, similar a la de Vim, para navegar fácilmente entre ventanas.

fantasticsid avatar Feb 01 '11 11:02 fantasticsid
Aceptado

¿ Has probado WindMove ? Viene incluido con Emacs 21+. Te mueves con Shift-up, Shift-down, Shift-lefty Shift-right, aunque puedes cambiar el modificador. De los documentos:

;; Installation:
;;
;; Put the following line in your `.emacs' file:
;;
;;     (windmove-default-keybindings)         ; shifted arrow keys
;;
;; or
;;
;;     (windmove-default-keybindings 'hyper)  ; etc.
;;
;; to use another modifier key.
;;
;;
;; If you wish to enable wrap-around, also add a line like:
;;
;;    (setq windmove-wrap-around t)
Trey Jackson avatar Feb 01 '2011 05:02 Trey Jackson

El enlace predeterminado para other-windowtambién me parece muy tedioso. He definido lo siguiente en mi .emacs:

(global-set-key [(control ?,)] (lambda () (interactive) (other-window -1)))
(global-set-key [(control ?.)] (lambda () (interactive) (other-window 1)))

Simplemente busque algunas combinaciones de teclas fáciles de alcanzar (yo uso un diseño de Dvorak, por lo que C-,puede C-.que no le resulte tan fácil alcanzarlas), preferiblemente una al lado de la otra, para vincularlas a esas lambdas.

Además, encontré la wiki de Emacs hace unos meses. ¡ Nifty Tricks tiene una buena lista de formas de hacer que Emacs sea más fácil de usar!

Daniel Gallagher avatar Feb 01 '2011 06:02 Daniel Gallagher

En Icicles , por defecto C-x oestá vinculado al comando múltiple icicle-other-window-or-frame, que funciona de esta manera:

  • Sin prefijo arg o con un prefijo numérico distinto de cero arg: si el marco seleccionado tiene varias ventanas, entonces esto es other-window. De lo contrario, lo es other-frame.

  • Con un prefijo cero arg (p. ej. C-0): si el marco seleccionado tiene varias ventanas, entonces esto es icicle-select-windowcon ventanas en el marco como candidatas. De lo contrario (marco de ventana única), esto es icicle-select-frame.

  • Con Cu simple: si el marco seleccionado tiene varias ventanas, entonces se trata icicle-select-windowde ventanas de todos los marcos visibles como candidatas. De lo contrario, esto es icicle-select-frame.

Bueno entonces ¿qué son icicle-select-windowy icicle-select-frame?

Son comandos múltiples que le permiten elegir una ventana o marco para seleccionar por nombre. (Puede vincularlos por separado, si lo desea; cada uno cambia su comportamiento en función de sus propios argumentos de prefijo).

Los nombres de ventanas y marcos se toman de sus búferes mostrados, con [N]( N=1,2,...) agregado si es necesario para un nombre único si el mismo búfer se muestra en más de una ventana/marco.

Al ser multicomandos, puedes elegir completando y/o ciclando. La finalización puede ser prefijo, subcadena, expresión regular o difusa.

http://www.emacswiki.org/emacs/Icicles_-_Multi-Commands

Drew avatar Aug 20 '2011 16:08 Drew