2011-02-01 14 views
17

Quando divido la finestra in emacs più volte (sotto il terminale) l'intero schermo è diviso in più parti con disposizione gerarchica. In vim è facile passare da una finestra all'altra in modo intuitivo con Control-w + (h, j, k, l), ma in Emacs posso solo usare Control-x + o per passare a "l'altra finestra", che probabilmente richiederebbe diverse iterazioni per arrivare finalmente alla finestra che intendo. Mi chiedo se esiste un modo migliore simile a quello di Vim per navigare facilmente tra le finestre?Navigazione migliore delle finestre in Emacs?

risposta

29

Hai provato WindMove? Viene fornito in bundle con Emacs 21+. Si sposta in giro con Shift-up, Maiusc-down, Shift-sinistra e Shift-destra, anche se è possibile cambiare il modificatore. Dalla documentazione:

;; 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

consiglio vivamente l'aggiunta di biblioteca FrameMove di Trey pure. WindMove e FrameMove combinati rendono la navigazione delle finestre un gioco da ragazzi. http://trey-jackson.blogspot.com/2010/02/emacs-tip-35-framemove.html – phils

+0

Per il terminale di Mac OS X Mavericks, 'Shift-up | down' non funziona. Prova questo: http://zurktech.blogspot.ch/2014/01/emacs-windmove-and-mavericks-terminalapp.html – randomor

+0

da utilizzare con 'org-mode' dai un'occhiata a: http://orgmode.org/ manuale/Conflicts.html, sezione windmove – AdrieanKhisbe

0

Questa è stata anche la mia prima esperienza con emacs. Ma, usando il windmove, posso sistemarlo, nel modo in cui lo voglio. Io uso questo come il modificatore per windmove:

(windmove-default-keybindings 'meta) 

Io uso ALT per la navigazione di windmove

2

trovo l'associazione per other-window di default per essere veramente noioso, troppo. Ho definito il seguente nel mio .emacs:

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

Basta trovare alcuni facili da raggiungere combinazioni di tasti (io uso un layout Dvorak, così C, e C- potrebbe non essere così facile. per voi da raggiungere), preferibilmente proprio uno accanto all'altro, per legare a quei lambda.

Inoltre, ho trovato il Emacs wiki alcuni mesi fa. Nifty Tricks ha una bella lista di modi per rendere Emacs più facile da usare!

1

Vedere switch-window. Numera le finestre per farti passare direttamente a quello che vuoi.

+0

Io voto per questa soluzione. WinMove è in conflitto con la modalità malvagia e raggiungere i tasti freccia mi sembra più lento di C-x o [numero] (forse è solo psicologico) –

1

In ghiaccioli, per default Cx o è destinata a multi-comando icicle-other-window-or-frame, che funziona in questo modo:

  • Senza arg prefisso o un non-zero arg prefisso numerico: Se il frame selezionato ha più finestre, questo è other-window. Altrimenti, è other-frame.

  • Con arg prefisso di zero (ad esempio C-0): Se il frame selezionato ha più finestre, allora questo è icicle-select-window con finestre nel telaio come candidati. In caso contrario (frame a finestra singola), questo è icicle-select-frame.

  • Con plain C-u: Se il frame selezionato ha più finestre, allora questo è icicle-select-window con finestre di tutti i fotogrammi visibili come candidati. Altrimenti, questo è icicle-select-frame.

Ebbene, quali sono icicle-select-window e icicle-select-frame?

Sono multi-comandi che consentono di scegliere una finestra o una cornice da selezionare in base al nome. (È possibile associarli separatamente, se si desidera - cambiano ciascuno il loro comportamento in base al proprio prefisso.)

I nomi di finestre e frame vengono presi dai rispettivi buffer visualizzati, con= 1,2 ,. ..) aggiunto se necessario per un nome univoco se lo stesso buffer viene visualizzato in più finestre/frame.

Trattandosi di più comandi, è possibile scegliere completando e/o ciclicamente. Il completamento può essere prefisso, sottostringa, regexp o fuzzy.

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

Problemi correlati