2011-02-01 12 views
17

Cuando dividí la ventana en emacs varias veces (debajo del terminal) toda la pantalla se divide en varias partes con una disposición jerárquica. En vim es fácil cambiar entre ventanas intuitivamente con Control-w + (h, j, k, l), pero en Emacs solo 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 intento. Me pregunto si hay una mejor manera similar a la de Vim para navegar fácilmente entre ventanas.¿Mejor navegación de ventana en Emacs?

Respuesta

29

¿Has probado WindMove? Viene incluido con Emacs 21+. Usted se mueve alrededor con de cambio de velocidad, cambio descendente, Shift-izquierda, y Shift derecha, aunque se puede 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) 
+4

recomiendo encarecidamente añadiendo biblioteca FrameMove de Trey también. WindMove y FrameMove combinados hacen que navegar en la ventana sea una brisa absoluta. http://trey-jackson.blogspot.com/2010/02/emacs-tip-35-framemove.html – phils

+0

Para el terminal Mac OS X Mavericks, 'Shift-up | down' no funciona. Pruebe esto: http://zurktech.blogspot.ch/2014/01/emacs-windmove-and-mavericks-terminalapp.html – randomor

+0

para usar a lo largo de 'org-mode' eche un vistazo a: http://orgmode.org/ manual/Conflicts.html, sección de movimiento de viento – AdrieanKhisbe

0

Esa fue también mi primera experiencia con emacs. Pero, usando windmove, puedo instalarlo, de la manera que lo quiero. Puedo usar esto como el modificador de windmove:

(windmove-default-keybindings 'meta) 

utilizo ALT para la navegación de windmove

2

encuentro la unión de other-window por defecto a ser muy tedioso, también. He definido el siguiente en mi .emacs:

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

Sólo tiene que encontrar algunas fáciles de alcanzar combinaciones de teclas (utilizo un diseño de Dvorak, por lo C-, y C- puede no ser tan fácil. para que pueda alcanzar), preferiblemente uno al lado del otro, para unirse a esos lambdas.

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

1

Ver switch-window. Numerará las ventanas para permitirle cambiar directamente a la que desea.

+0

Yo voto por esta solución. WinMove entra en conflicto con Evil Mode y, al parecer, llegar a las teclas de flecha me parece más lento que C-x o [number] (tal vez solo sea psicológico) –

1

En carámbanos, por defecto Cx o se une a la de varios comandos icicle-other-window-or-frame, que funciona de esta manera:

  • Sin argumento prefijo o un arg no es cero numérico prefijo: Si el marco seleccionado tiene varias ventanas, entonces este es other-window. De lo contrario, es other-frame.

  • Con un arg cero prefijo (por ejemplo C-0): Si el marco seleccionado tiene varias ventanas, entonces este es icicle-select-window con ventanas en el marco como candidatos. De lo contrario (marco de ventana única), esto es icicle-select-frame.

  • Con C liso u: Si el marco seleccionado tiene varias ventanas, entonces este es icicle-select-window con ventanas de todos los marcos visibles como candidatos. De lo contrario, esto es icicle-select-frame.

Pues bien, ¿cuáles 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 cuadros se toman de sus búferes visualizados, con [N] (N = 1,2 ,. ..) anexado si es necesario para un nombre único si el mismo buffer se muestra en más de una ventana/marco.

Al ser comandos múltiples, puede elegir completando y/o ciclando. La finalización puede ser prefix, substring, regexp o fuzzy.

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

Cuestiones relacionadas