¿Mejor navegación de ventanas en Emacs?
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.
¿ 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)
El enlace predeterminado para other-window
tambié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!
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 esother-frame
.Con un prefijo cero arg (p. ej. C-0): si el marco seleccionado tiene varias ventanas, entonces esto es
icicle-select-window
con ventanas en el marco como candidatas. De lo contrario (marco de ventana única), esto esicicle-select-frame
.Con Cu simple: si el marco seleccionado tiene varias ventanas, entonces se trata
icicle-select-window
de ventanas de todos los marcos visibles como candidatas. De lo contrario, esto esicicle-select-frame
.
Bueno entonces ¿qué son icicle-select-window
y 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