In Vanille Emacs muss ich C-x b
den Puffernamen manuell eingeben, um zu wechseln. Wenn ich den Namen des Puffers vergesse, muss ich drücken, TAB
um mögliche Abschlüsse aufzulisten. Kann ich irgendetwas tun, um diesen Prozess zu beschleunigen?
key-bindings
buffers
cycling
Nixeagle
quelle
quelle
C-x C-<left/right>
, um schnell zwischen Puffern zu wechseln. Wenn ich zum "weiteren" Puffer wechseln muss, verwende ichIBuffer
.Antworten:
Es gibt einen Ido- Modus, der helfen sollte.
BEARBEITEN:
Fügen Sie dies in Ihre Init-Datei ein, um den Ido-Modus standardmäßig zu aktivieren:
(ido-mode 1)
Nun
C-x b
wird Ihnen eine Liste der Kandidaten angezeigt.Fügen Sie dies in Ihre Init-Datei ein, wenn Sie möchten, dass die Elemente vertikal angezeigt werden:
(setq ido-separator "\n")
Mit freundlicher Genehmigung von Ergoemacs
Lassen Sie mich auch diesen Beitrag vorschlagen , in dem es um das Umschalten zum vorherigen / nächsten Puffer geht.
quelle
Ich habe vor kurzem angefangen,
C-x <left>
und zu verwendenC-x <right>
. Dies sind beide Standard-Emacs-Bindungen - nichts zu konfigurieren. Mit der linken Maustaste kehren Sie zum vorherigen Puffer zurück (anfangs identisch mitC-x b RET
). Wenn Sie dies jedoch erneut tun, gelangen Sie zum 3. zuletzt besuchten Puffer. Wenn Sie viel zwischen 3 oder 4 Puffern hin und her springen, finde ich es viel einfacher, als zu versuchen, sich Puffernamen zu merken.Ich habe auch gerade entdeckt
C-x C-<left>
undC-x C-<right>
sind mit den gleichen Funktionen gebunden , so dass Sie nur die Strg - Taste und wechseln zwischen x gedrückt halten und die Pfeile durch Puffer zu kippen. Sehr schön!quelle
Du könntest Helm benutzen .
In meinem Setup habe ich eingeschaltet
C-x b
zuM-l
. Dieshelm-buffers-list
macht den Prozess ziemlich schnell, zumindest für mich.quelle
ido
oderiswitchb
odericicles
ähnliches verwenden, aber Helm hat sie im Grunde genommen überholt. Ja,ace-jump-buffer
ist cool, aber nicht so schnell wie Helm, denn bevor Sie wissen, welche Taste Sie drücken müssen, müssen Sie den Puffer in der Liste finden. Mit Helm können Sie die Liste mit ein paar Tastenanschlägen eingrenzen, die Sie bereits kennen (wie den Namen des Puffers). Ich benutze esC-TAB
, um zwischen Puffern zu wechseln, aktuelle Dateien, Lesezeichen usw. zu laden. Nichts ist schneller.helm
. Aber ich ziehe mithelm-mini
, was auch zeigt IhnenRecentf
aufhelm-buffers-list
.ivy-switch-buffer
.Nur um Tweaks hinzuzufügen, die ich mit dem bereits erwähnten Ido verwende :
Ich benutze auch
ace-window
, um zwischen Puffern zu wechseln und zwischen sichtbaren Fensternace-jump-mode
zu springen . Gewöhnungsbedürftig, aber einen Versuch wert.Ich habe es mit kombiniert
key-chord-mode
undso
für einen schnellen Sprung getroffen:Alle oben genannten Pakete sind über den Paketmanager von Melpa erhältlich.
quelle
use-package
mitrequire
Verwirrung zu vermeiden. In dem angegebenen Beispiel muss ein Benutzer kein zusätzliches Paket installieren, um diese Lösung zu implementieren.Wie @kuanyui in einem Kommentar sagt, sind
next-buffer
&previous-buffer
sehr schnell, wenn Sie nur ein paar Puffer haben, zwischen denen Sie wechseln können . (Für mehr als ein paar und für mehr Funktionen zur Pufferauswahl verwende ichicicle-buffer
.)Standardmäßig befinden sich jedoch
next-buffer
undprevious-buffer
auf einem PräfixschlüsselC-x
.Das bedeutet, dass sie nicht wiederholbar sind : Sie können nicht einfach treffen
C-x <right> <right> <right>...
. Sie müssen diese Befehle stattdessen entweder an verschiedene, wiederholbare Tasten binden oder verwendenC-x <right> C-x <right> C-x <right>...
, was nicht sehr schnell ist.Laden Sie für wiederholbare Versionen dieser Befehle die Bibliothek
misc-cmds.el
und ordnen Sie die nicht wiederholbaren Vanille-Versionen den dort definierten wiederholbaren Versionen zu:(Auf ähnliche Weise finden Sie in derselben Bibliothek eine Version
undo
, die auch auf einem Präfixschlüssel wiederholbar ist:.undo-repeat
)Übrigens können Sie so ziemlich jeden Befehl (auch auf einer Präfix-Taste) mit der Funktion
repeat-command
(vonmisc-cmds.el
) wiederholbar machen . Dies ist alles, was benötigt wurde, um die wiederholbare Version vonnext-buffer
:quelle
C-,
undC-.
Wiederholbarkeit zu gewinnen, und während Sie es sind sowieso gesetztC-x.
undC-x,
aufother-window
und(lambda()(interactive)(other-window -1))
. Das Radfahren von Fenstern erfordert wahrscheinlich weniger Wiederholbarkeit, und Sie kommen in einer Minute ohne zusätzliche Pakete davon.next-buffer
undprevious-buffer
die beste Lösung, unabhängig von einer bestimmten Schlüsselbindung. Deshalb mein Kommentar.Ich bin überrascht, dass noch niemand etwas erwähnt
iswitchb
hat. Es ist vielleicht nicht so mächtig wieido
, aber lange bevorido-mode
es geboren wurde,iswitchb-mode
war es bereits Standard für Emacs und es ist auch heute noch nützlich. Um es zu versuchen, setzen Sie einfachin deine .emacs oder aktiviere über
M-x iswitchb-mode
.quelle
iswitchb
ist veraltet ab Emacs 24.4. Alle Funktionen sind ab sofort verfügbarido
.Verwenden Sie helm-buffer-list oder helm-mini, um den Puffereintrag und den Fuzzy-Matching visuell auszuwählen. Es kann viele Dinge außerhalb des Pufferschaltens tun. Sie sollten die Demo im Link sehen.
quelle
Andere haben Pakete besprochen, die nützlich sind, um das Leben im Hinblick auf das Umschalten von Puffern / Fenstern / Rahmen zu erleichtern. (Ich persönlich benutze,
helm
was phänomenal ist.) Ich möchte über einfachere Änderungen sprechen, die für eine angenehmere Emacs-Erfahrung sorgen können.Für mich war die Lösung für meine Probleme mit dem Puffer / Frame (weil ich denke, dass dies
C-x o
das Schlimmste ist) kein Paket. es war einfach:C-;
zuother-window
(Radfahren durch Fenster)C-'
zuother-frame
(durch Frames radeln). Nachdem ich diese Verknüpfung hinzugefügt habe, habe ich tatsächlich viel mehr Frames verwendet.help
sich öffnenden Fensters) (beim Lesen von Manpages, Apropos usw.) mit dem zuvor sichtbaren Fenster).Ich dachte auch, ich würde ein paar Gedanken über die Tastenbelegung teilen, die Neulinge vielleicht hilfreich finden. (Tut mir leid, wenn dies der falsche Ort ist.) Ich habe keine konkreten Vorschläge, sondern eine "Philosophie", mit der ich eine effektive Reihe von Tastenkombinationen für mich selbst aufrechterhalten kann.
Nicht häufig verwendete Befehle verdienen keine einfachen Tastenkombinationen.
keyfreq.el
Sie herunter und sehen Sie, was Sie wirklich häufig verwenden. Mit einer Überlebensmethode entscheide ich, welche Befehle die wertvollste Immobilie auf meiner Tastatur erhalten.C-\
ist eine große Abkürzung (aus den Gründen , in # diskutiert 2) ... und es wäre ein Verbrechen es auf den Standardbefehl zugeordnet verlassen werden:change-input-method
. (Vielleicht benutzen einige von euch es oft, ich tue es bestimmt nicht.)Die folgenden Faktoren bestimmen die Benutzerfreundlichkeit und Geschwindigkeit einer Tastenkombination (beginnend mit der wichtigsten):
Ctrl
,Meta
, etc.). Zum Beispiel ist es für mich viel schneller zu schlagenC-c C-l C-p
als zu schlagenC-x o
. Ich persönlich finde es sehr unpraktisch, dieCtrl
Taste zwischen aufeinanderfolgenden Tastenanschlägen einer bestimmten Tastenfolge abheben zu müssen . Es ist so viel einfacher, einfach die Modifikatortaste zu drücken (in diesem FallCtrl
). (Dieses spezielle Beispiel kann durch die Tatsache beeinflusst werden, dass ich meinenCtrl
Schlüssel und meinenCaps-Lock
Schlüssel neu zugeordnet habe.)C-c C-l C-p
als es zu schlagen istC-p C-' C-;
. (Probieren Sie es aus und es sollte offensichtlich sein.) Im Allgemeinen ist es viel einfacher, Tastenfolgen zu verwenden, bei denen abwechselnde Hände (oder zumindest abwechselnde Finger auf derselben Hand) verwendet werden.Nur ein paar Gedanken, von denen ich dachte, dass sie für Neulinge hilfreich sein könnten. Ich kann später noch etwas hinzufügen.
quelle
Ich benutze
windmove.el
undbs.el
um schnell zwischen Puffern zu wechseln. Beide Modi sind in Emacs enthalten.windmove.el
- wechselt in eine bestimmte Richtung in ein Fenster (ein gerade angezeigter Puffer), z. B. nach links, rechts, oben, unten.bs.el
- Ich verwendebs-cycle-next
undbs-cycle-previous
, um zum nächsten Puffer zu wechseln, der derzeit nicht in einem Fenster angezeigt wird.Sie können Setup mit windmove
(windmove-default-keybindings)
denen die entsprechenden Befehle bindenShift-Left Arrow
,Shift-Right Arrow
usw.Zum Einrichten
bs.el
funktioniert so etwas:quelle
windmove.el
befindet sich unter EmacsWiki die Seite "Switching Buffers", plusbs.el
arbeitet mit Puffern, nicht mit Fenstern.Der schnellste Weg, um zwischen Puffern zu wechseln, ist mit
ace-jump-buffer
. Ein Tastendruck öffnet das Puffermenü und wählt dann den Buchstaben neben dem gewünschten Puffer ausace-jump-line-mode
. Dies funktioniert am besten für die etwa 26 neuesten Puffer. Wenn Sie zu Puffern wechseln möchten, die in Ihrem Nutzungsverlauf weiter zurückliegen,ido-switch-buffer
ist dies immer eine gute Wahl.quelle
Ich bevorzuge die Navigation auf Registerkarten im Browser-Stil. Ich habe Strg + Tab und Strg + Umschalt + Tab an den nächsten bzw. vorherigen Puffer gebunden:
quelle
Allgemein gesprochen gibt es zwei Möglichkeiten, um den Puffer zu wechseln, und die meisten Lösungen fallen in eine dieser Möglichkeiten.
Dies ist
C-x b
die Standardeinstellung. Ido bietet Ihnen eine schöne automatische Vervollständigung, so dass Sie nicht so viel TAB TAB TAB brauchen. Projekte wie helm, projectile usw. erleichtern das Arbeiten mit Dateien in einem Projekt usw. und können zusammen mit ido sehr nützlich sein.Dies ist nützlich, wenn Sie so viele Puffer haben und eine Liste von allen möchten. Sie können den Puffer nach oben und unten verschieben und die Eingabetaste drücken, um eine bestimmte Datei aufzurufen. Ibuffer ist ziemlich gut dafür.
Ich benutze beides und so kann man es einrichten.
quelle
Neben ido habe ich folgendes Setup.
Verwenden Sie im bösen Modus die folgenden Tastenkombinationen, um die Puffer zu wechseln
Legen Sie den Puffernamen als Fenstertitel fest. Dies hilft Ihnen beim Navigieren mit den obigen Tastenkombinationen
Wenn Sie den bösen Modus verwenden, können Sie es versuchen
evil-leader
. Binden Sie häufig verwendete Schlüssel an den Anführer. zB können Sie bindenC-x b
an<leader>-b
.Binde dired mode an
C-<f8>
. Wenn Sie nun eine Datei im Verzeichnis öffnen möchten, drücken SieC-<f8>
, navigieren Sie zu Dateiname und drücken Siea
anstelle vonRET
. So wird dired Puffer sofort getötet.Verwenden Sie den
recentf
Modus, um in den letzten Dateien zu navigieren.C-x C-r
Ein letzter wichtiger Punkt ist - die Verwendung einer ergonomischen mechanischen Tastatur. So können Sie mit dem Handgelenk einfach und schnell die Strg-Taste drücken, anstatt den kleinen Finger zu verletzen.
Hoffe das könnte jemandem helfen.
quelle
Wie Sie aus den anderen Antworten ersehen können, gibt es viele Möglichkeiten, diese bestimmte Aufgabe zu optimieren. Ich persönlich verwende Lusty Emacs als Pufferschaltgerät, da es die Fuzzy-Vervollständigung recht gut handhabt. Dies minimiert die Anzahl der Tastenanschläge, die zum Auswählen des neuen Puffers erforderlich sind. Zum Beispiel muss nur oxr eingegeben werden, um auf ox-disclose.el umzuschalten , oder auch nur ein zweites Mal, da auch der Verlauf der Schalter verfolgt wird.
quelle
Wenn Sie Ihre Puffer einfach weiter durchsuchen möchten, fügen Sie Folgendes zu Ihrer Init-Datei hinzu:
Sie benötigen das Bindungsschlüsselpaket , und Sie können die Schlüsselbindungen nach Ihren Wünschen ändern, aber ich fand diese Schlüsselbindungen am bequemsten. Bevor Sie dieses Snippet hinzufügen können, müssen Sie den Bindungsschlüssel by,
quelle
Ich benutze C-Tab und CS-Tab wie allgemeine Anwendungen.
quelle
Dies ist keine sehr elegante Lösung (da sie Makros anstelle von Funktionen verwendet) und sie antwortet nicht darauf, wie schnell auf einen Puffer gesprungen werden kann, sondern nur darauf, wie zu den in letzter Zeit verwendeten Puffern gesprungen werden kann. Aber es funktioniert sehr gut für mich:
Ich habe eine Reihe von Makros, mit denen ich
ido-switch-buffer
zum vorherigen Puffer, zum vorherigen Puffer, zum vorherigen Puffer usw. springen kann. Und ich habe diese Makros an für mich bequeme Tastenzuordnungen gebunden.So springen Sie zum letzten Puffer:
So springen Sie zum vorletzten Puffer:
So springen Sie zum vorletzten Puffer:
Usw. (Sie können so viele Anzeigen hinzufügen,
?\C-n
wie Sie möchten, um die Historie der besuchten Puffer so weit wie Sie möchten zurückzuverfolgen).Es gibt eine integrierte Funktion, um zum vorherigen Puffer zu springen. Der Vorteil der Verwendung von Makros
ido-switch-buffer
besteht jedoch darin, dass Sie die Variable so anpassen könnenido-ignore-buffers
, dass spezielle Puffer wie*Messages*
oder*scratch*
und andere unerwünschte Puffer aus der Liste entfernt werden. Auf diese Weise sind die einzigen Puffer, zu denen Sie springen, diejenigen, zu denen Sie wirklich springen möchten.quelle
Auf meiner VM ist Cx ALT-RIGHT / LEFT zu langsam. Ich muss warten, bis sich Cx in der Statusleiste registriert hat, bevor ich etwas anderes tun kann. Plus es ist einfach zu viele Schlüssel. Also habe ich C-TAB und CM-TAB dem nächsten und vorherigen Puffer zugeordnet, wie ich es sowieso in den meisten Windows-Programmen mache. In Emacs ist das ganz einfach:
M-x
Sie gelangen zur Statusleiste.global-set-key
Geben Sie dann ein, das Sie zur Eingabe der Tastenfolge auffordert, an die Sie binden möchten (C-TAB
), und geben Sie dann den Befehl ein, an den Sie binden möchten (next-buffer
). Das ist es!quelle