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
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)
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
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!
Vedere switch-window
. Numera le finestre per farti passare direttamente a quello che vuoi.
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) –
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.
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
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
da utilizzare con 'org-mode' dai un'occhiata a: http://orgmode.org/ manuale/Conflicts.html, sezione windmove – AdrieanKhisbe