Bringt C-x omich in Emacs zum nächsten Fenster.
Welches Tastaturmakro bringt mich zum vorherigen Fenster in Emacs?
Bringt C-x omich in Emacs zum nächsten Fenster.
Welches Tastaturmakro bringt mich zum vorherigen Fenster in Emacs?
Antworten:
Möglicherweise möchten Sie auch Windmove verwenden, mit dem Sie basierend auf der Geometrie zum Fenster Ihrer Wahl navigieren können. Ich habe Folgendes in meiner .emacs-Datei, um Fenster mit der Cx-Pfeiltaste zu ändern.
(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)
diese Funktionen an UMSCHALT + Auf / Ab / Links / Rechts bindet, was meiner Meinung nach bequemer ist als Ihre C-x
Bindungen (die im Widerspruch zu den ebenfalls nützlichen Standardbindungen für previous-buffer
und stehen next-buffer
. Lkahtz: Mit dieser (kbd)
Funktion können Sie Schlüssel in Zeichenfolgennotation angeben in der besser lesbaren Syntax, die auch von Emacs verwendet wird, wenn Sie eine Bindung verwenden C-h k
oder C-h c
beschreiben.
windmove-default-keybindings
um einen anderen Modifikator anzugeben, der in Verbindung mit den Pfeiltasten verwendet werden soll. Damit kann diese Funktion auch für Personen nützlich sein, die den Schichtauswahlmodus verwenden.
Persönlich bevorzuge ich zu verwenden window-number.el
Verwenden Sie Ctrl- x, Ctrl- n, um ein anderes Fenster auszuwählenj
Wobei n die Nummer des Fensters ist, zeigt das Modell jedes Fensters seine Nummer an, wie im Screenshot gezeigt.
Laden Sie einfach window-number.el herunter , platzieren Sie es in Ihrem Emacs -Ladepfad und verwenden Sie Folgendes in Ihrem.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)
Es gibt einen anderen ähnlichen Modus, switch-window.el
der große Zahlen in den Fenstern anzeigt ... (Durch Drücken der Zahl wird das Fenster umgeschaltet und die Anzeige zurückgesetzt.)
(Quelle: tapoueh.org )
C-x C-j
, da dies die Standardbindung für dired-jump
Sie ist (require 'dired-x)
. (Sehen M-x customize-group RET dired-keys RET
Sie, ob Sie das überschreiben möchten.)
switch-window.el
, es auszuprobieren. C-x o
Stattdessen wird es verwendet. Wenn nur zwei Fenster aktiv sind, wird nur das andere Fenster ausgewählt. Ich denke, es ist am klügsten, sich wieder zu binden C-x o
, um den window-number
Trick zu machen. Da haben Sie ganz recht dired-jump
. Persönlich mache ich weniger Fensterwechsel und benutze C-x b
mich selbst, aber die Verbesserung C-x o
ist sehr erfreulich.
Wenn Sie häufig mit mehreren Emacs-Fenstern (> 3) arbeiten und einige Tastenanschläge speichern möchten, fügen Sie diese Ihrer Init-Datei hinzu, und Sie sind besser dran:
(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)
Jetzt einfach mit Mo schnell durch die Fenster radeln
other-window
, damit es funktioniert.
Hier gibt es einige sehr gute und vollständige Antworten, aber um die Frage minimalistisch zu beantworten:
(defun prev-window ()
(interactive)
(other-window -1))
(define-key global-map (kbd "C-x p") 'prev-window)
previous-window
eingebaut.
M-x
sollte also einem anderen Zweck dienen.
Basierend auf der Idee von @Nate, aber leicht modifiziert, um das Rückwärtswechseln zwischen Fenstern zu unterstützen
;; 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)
Nur um die Antwort von @Nate, @aspirin und @ Troydm zu ergänzen, finde ich dies eine sehr hilfreiche Ergänzung, wenn Sie die Windmove-Befehle an eine beliebige Tastenkombination binden möchten:
(setq windmove-wrap-around t)
Bei der Standardkonfiguration wird eine Fehlermeldung angezeigt, wenn Sie versuchen, in ein nicht vorhandenes Fenster zu wechseln, was nach einer Weile ärgerlich wird. Wenn jedoch Windmove-Wrap-Around eingestellt ist, wird beim Versuch, sich beispielsweise vom unteren Rand des Rahmens zu entfernen, stattdessen das oberste Fenster im Rahmen ausgewählt. Dies kann für Sie ein intuitiveres Verhalten sein.
M-n
und M-p
macht für mich am meisten Sinn, da sie analog zu C-n
( nächste Zeile ) und C-p
( vorherige Zeile ) sind:
(define-key global-map (kbd "M-p") 'previous-multiframe-window)
(define-key global-map (kbd "M-n") 'other-window)
M-n
und M-p
bereits in Terminals (gdb, python, ielm usw.) verwendet werden, sodass Sie zu einer anderen Methode zurückkehren müssen, um aus dem Terminalpuffer zu springen.
In Bezug auf Nates Antwort ersetzte ich das arrow keys
, um das Traditionelle p
zum Gehen up
, n
zum Gehen down
, f
zum Gehen right
und b
zum Gehen zu verwenden left
. Ich habe auch die Ctrl
mit Super
Taste ersetzt, ebenso C-p, C-n, C-f and C-b
wie die Standardbewegungstasten. Mit dieser Kombination mit M
können Sie Zeichen und Zeilen überspringen, anstatt nach jedem Tastendruck einzeln durchzugehen. Daher war der Super
Schlüssel die beste Wahl, um eine einfache Schlüsselbindung zu gewährleisten. Außerdem müssen Sie jetzt Ihre Hand nicht mehr von der Startreihe nehmen!
(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)
Ich hoffe es hilft!
(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)))
altjund altkwird durch Ihre sichtbaren Puffer radeln. Vorwärts und rückwärts, um genau zu sein.
Es gibt bereits ein Paket, mit dem Sie mithilfe von M- die Fenster wechseln können. Überprüfen Sie diese Website . Fügen Sie dies Ihrer Init-Datei hinzu:
(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 z
den letzten Befehl wiederholen, um die Fenster schnell zu wechseln.