In Emacs, C-x omi porta alla finestra successiva.
Quale macro della tastiera mi porta alla finestra precedente in Emacs?
In Emacs, C-x omi porta alla finestra successiva.
Quale macro della tastiera mi porta alla finestra precedente in Emacs?
Risposte:
Potresti anche provare a utilizzare Windmove che ti consente di navigare nella finestra di tua scelta in base alla geometria. Ho quanto segue nel mio file .emacs per cambiare Windows usando il tasto freccia Cx.
(global-set-key (kbd "C-x <up>") 'windmove-up)
(global-set-key (kbd "C-x <down>") 'windmove-down)
(global-set-key (kbd "C-x <right>") 'windmove-right)
(global-set-key (kbd "C-x <left>") 'windmove-left)
(windmove-default-keybindings)lega queste funzioni a SHIFT + su / giù / sinistra / destra, che penso sia più conveniente delle tue C-xassociazioni (che sono in conflitto con le associazioni predefinite anche utili per previous-buffere next-buffer. Lkahtz: la (kbd)funzione ti consente di specificare le chiavi nella notazione di stringa nella sintassi più leggibile che è anche usata da Emacs quando usi C-h ko C-h cper descrivere un binding.
windmove-default-keybindingsper specificare un modificatore diverso da usare insieme ai tasti freccia; quindi quella funzione può ancora essere utile per le persone che usano la modalità di selezione dei turni.
Personalmente preferisco usare window-number.el
Per selezionare una finestra diversa, utilizzare Ctrl- x, Ctrl- j n
Dove n è il numero della finestra, la modeline di ogni finestra mostra il suo numero, come mostrato nello screenshot.

Basta scaricare window-number.el , posizionarlo nel percorso di caricamento di emacs e utilizzare quanto segue nel file.emacs
(autoload 'window-number-mode "window-number"
"A global minor mode that enables selection of windows according to
numbers with the C-x C-j prefix. Another mode,
`window-number-meta-mode' enables the use of the M- prefix."
t)
C'è un'altra modalità simile chiamata switch-window.elche ti dà grandi numeri nelle finestre ... (premendo il numero si cambia la finestra e si ripristina la visualizzazione.)

(fonte: tapoueh.org )
C-x C-j, poiché è l'associazione predefinita per dired-jumpif you (require 'dired-x). (Vedi M-x customize-group RET dired-keys RETse vuoi sovrascriverlo.)
switch-window.el, utilizza C-x oinvece e quando ci sono solo due finestre attive, seleziona semplicemente l'altra finestra. Penso che sia più saggio rilegare C-x oper fare il window-numbertrucco, hai perfettamente ragione dired-jump. Personalmente faccio meno cambi di finestra e uso C-x bme stesso, ma avere il potenziato C-x oè abbastanza piacevole.
Se lavori molto con più finestre di emacs (> 3) e vorrai salvare alcune battute, aggiungilo al tuo file init e starai meglio:
(defun frame-bck()
(interactive)
(other-window-or-frame -1)
)
(define-key (current-global-map) (kbd "M-o") 'other-window-or-frame)
(define-key (current-global-map) (kbd "M-O") 'frame-bck)
Ora pedala velocemente attraverso le finestre con Mo
other-windowper farlo funzionare.
Ci sono alcune risposte molto buone e complete qui, ma per rispondere alla domanda in modo minimalista:
(defun prev-window ()
(interactive)
(other-window -1))
(define-key global-map (kbd "C-x p") 'prev-window)
previous-windowintegrato.
M-xquindi dovrebbe servire a uno scopo diverso.
Basato sull'idea di @Nate ma leggermente modificato per supportare il ciclismo all'indietro tra le finestre
;; Windows Cycling
(defun windmove-up-cycle()
(interactive)
(condition-case nil (windmove-up)
(error (condition-case nil (windmove-down)
(error (condition-case nil (windmove-right) (error (condition-case nil (windmove-left) (error (windmove-up))))))))))
(defun windmove-down-cycle()
(interactive)
(condition-case nil (windmove-down)
(error (condition-case nil (windmove-up)
(error (condition-case nil (windmove-left) (error (condition-case nil (windmove-right) (error (windmove-down))))))))))
(defun windmove-right-cycle()
(interactive)
(condition-case nil (windmove-right)
(error (condition-case nil (windmove-left)
(error (condition-case nil (windmove-up) (error (condition-case nil (windmove-down) (error (windmove-right))))))))))
(defun windmove-left-cycle()
(interactive)
(condition-case nil (windmove-left)
(error (condition-case nil (windmove-right)
(error (condition-case nil (windmove-down) (error (condition-case nil (windmove-up) (error (windmove-left))))))))))
(global-set-key (kbd "C-x <up>") 'windmove-up-cycle)
(global-set-key (kbd "C-x <down>") 'windmove-down-cycle)
(global-set-key (kbd "C-x <right>") 'windmove-right-cycle)
(global-set-key (kbd "C-x <left>") 'windmove-left-cycle)
Solo per aggiungere alla risposta di @Nate, @aspirin e @ Troydm, trovo che questa sia un'aggiunta molto utile se decidi di associare i comandi windmove a qualsiasi combinazione di tasti tu scelga:
(setq windmove-wrap-around t)
Con la configurazione predefinita riceverai un errore quando tenterai di spostarti in una finestra che non esiste, il che diventa un po 'fastidioso dopo un po'. Tuttavia, quando è impostato windmove-wrap-around, il tentativo di spostarsi dalla parte inferiore del frame, ad esempio, selezionerà invece la finestra più in alto nel frame. Questo potrebbe essere un comportamento più intuitivo per te.
M-ne M-pha più senso per me, poiché sono analoghi a C-n( riga successiva ) e C-p( riga precedente ):
(define-key global-map (kbd "M-p") 'previous-multiframe-window)
(define-key global-map (kbd "M-n") 'other-window)
M-ne M-psono già utilizzati nei terminali (gdb, python, ielm, ecc.) Quindi dovrai tornare a un altro metodo per saltare fuori dal buffer del terminale.
In riferimento alla risposta di Nate, ho sostituito l' arrow keysuso del tradizionale pper andare up, nper andare down, fper andare righte bper andare left. Ho anche sostituito la chiave Ctrlcon Supercome C-p, C-n, C-f and C-bsono i tasti di movimento predefiniti. Questa combinazione con Mti consente di saltare i caratteri e le righe invece di passare solo uno alla volta dopo ogni pressione di tasto. Quindi la Superchiave si è sentita la scelta migliore per mantenerla una facile associazione di tasti. Inoltre, ora non devi più togliere la mano dalla fila di casa!
(global-set-key (kbd "s-p") `windmove-up)
(global-set-key (kbd "s-n") `windmove-down)
(global-set-key (kbd "s-f") `windmove-right)
(global-set-key (kbd "s-b") `windmove-left)
Spero che sia d'aiuto!
(global-unset-key (kbd "M-j"))
(global-unset-key (kbd "M-k"))
(global-set-key (kbd "M-j") (lambda () (interactive) (other-window 1)))
(global-set-key (kbd "M-k") (lambda () (interactive) (other-window -1)))
altje altkscorrerà i tuoi buffer visibili. Avanti e indietro, per essere precisi.
Esiste già un pacchetto che ti consente di cambiare finestra utilizzando M-. controlla questo sito web . Aggiungi questo al tuo file init:
(require 'windmove)
(windmove-default-keybindings 'meta) ;; or use 'super to use windows key instead alt
(global-set-key (kbd "C-x a") 'ace-swap-window)
(global-set-key (kbd "C-x q") 'ace-select-window)
download ace-window from the melpa repo if you don't know how to do that
put this in your .emacs file if you don't have one create it
(package-initialize)
(require 'package)
(add-to-list 'package-archives '("melpa" , "http://melpa.org/packages/"))
(package-initialize)
then "m-x list-packages"
C-x zper ripetere l'ultimo comando per cambiare rapidamente le finestre.