Sagen Sie Emacs, um einen neuen Puffer in einem bestimmten Fenster zu öffnen

8

Wenn ein Emacs-Frame in mehrere Fenster aufgeteilt wird und ein neuer Puffer geöffnet wird, besteht die Möglichkeit, Emacs mitzuteilen, in welchem ​​Fenster der Puffer geöffnet werden soll.

Insbesondere, wenn ein Fenster einen dired-Puffer enthält und ich Emacs mitteilen möchte, in welchem ​​der anderen geöffneten Fenster eine neue Datei angezeigt werden soll.

Wenn der Emacs-Rahmen zum Beispiel wie folgt aufgeteilt ist:

%Vor%

Wo A, B, C und D die Fenster sind. Wenn A einen dired Puffer enthält, kann ich Emacs mitteilen, eine neue Datei in einem neuen Puffer in Fenster D zu öffnen?

    
Hypnotoad 06.06.2014, 10:24
quelle

2 Antworten

3

Hier ist eine andere Antwort -

Sie können mit Eiszapfen tun, was Sie wollen. Im Modus Eiszapfen ist C-x o , normalerweise other-window , icicle-other-window-or-frame . Ein Präfix arg gibt ihm mehrere alternative Verhaltensweisen, von denen eines (für Emacs 24 und später) ein Fenster auswählen soll, das von der nächsten Pufferanzeigeoperation verwendet wird (z. B. C-x C-f , C-x b ).

Das passiert, wenn Sie einen doppelten einfachen Präfix verwenden: C-u C-u C-x o . Das ruft den Befehl icicle-choose-window-for-buffer-display auf, den Sie natürlich auch an einen anderen Schlüssel binden können.

Sie wählen das Zielfenster anhand des Namens (mit Abschluss oder Rad usw.).

Dieser Befehl setzt die Variable icicle-next-window-for-display-buffer auf das von Ihnen ausgewählte Fenster. Eiszapfen weist die Befehle display-buffer , switch-to-buffer und switch-to-buffer-other-window so an, dass sie beim nächsten Aufruf das Fenster mit dem Wert icicle-next-window-for-display-buffer verwenden. (Nach diesem Aufruf kehren sie zu ihrem normalen Verhalten zurück.)

Dies bedeutet auch, dass wenn Sie eine andere Methode zur Auswahl eines Fensters haben, die Sie bevorzugen (z. B. Radfahren mit einer der anderen genannten Methoden hier ), dann könntest du diese Methode ändern, um icicle-next-window-for-display-buffer auf das gewählte Fenster zu setzen, um den gleichen Effekt zu erhalten (im Eiszapfen Modus). IOW, es ist wichtig, wie Sie das Fenster wählen; Setzen Sie einfach den Variablenwert darauf und die nächste Aktion, die den Puffer anzeigt, wird sie verwenden.

    
Drew 07.06.2014 00:33
quelle
0

Andere werden Ihnen wahrscheinlich Antworten geben, die direkter auf Ihre Frage antworten. Meine Antwort ist, nur den Fokus auf das gewünschte Fenster zu verschieben und dann C-x C-f oder was auch immer zu verwenden, um die Datei zu öffnen oder den gewünschten Puffer in dem ausgewählten Fenster anzuzeigen.

Um das zu tun, was Sie direkt angefordert haben, müssen Sie trotzdem eine Tastenfolge verwenden, die den gewünschten Befehl aufruft. Und wenn Sie etwas allgemeines wollen, das mit verschiedenen Befehlen arbeitet (z. B. find-file und switch-to-buffer ), dann müssen Sie einen Präfix-Schlüssel verwenden oder das Präfix arg neu zuweisen. Das sind typischerweise genauso viele Tastenanschläge wie es ist, um zum Fenster zu wechseln und dann den üblichen Befehl zu verwenden.

Natürlich, mit meinem Vorschlag brauchen Sie einen Befehl, um schnell zum gewünschten Fenster zu wechseln. Es gibt verschiedene Befehle, mit denen Sie zwischen den Fenstern wechseln oder die Vollendung verwenden können, um ein Fenster schnell nach Name oder Nummer auszuwählen.

Das würde ich vorschlagen: Wechseln Sie zum Fenster und zeigen Sie dann an, was Sie wollen, anstatt zu kombinieren (a) das Zielfenster mit (b) aufzurufen, indem Sie den angezeigten Befehl aufrufen der Puffer. IOW, mach es einfach auf die alte Schule: Geh zum Fenster und zeige es dort an.

Natürlich, wenn Sie nicht wirklich in diesem neu angezeigten Puffer landen wollen, und Sie wollen nur den Fokus dort belassen, wo Sie angefangen haben, dann müssten Sie mit meinem Vorschlag (zB) zurück zum Start gehen Fenster. Aus Ihrer Beschreibung geht nicht hervor, ob dies Ihr Anwendungsfall ist. Wenn ja, dann ist meine Lösung wahrscheinlich nicht so hilfreich.

Aber selbst in diesem Fall kann es immer noch nützlich sein, Dinge aufzuteilen: (a) einen Befehl, um (nur) das Fenster für den folgenden Anzeigepufferbefehl und (b) den Anzeigepufferbefehl zu bestimmen. IOW, tue im Wesentlichen dasselbe, was ich vorgeschlagen habe, aber der erste Schritt würde nur das Zielfenster bestimmen, anstatt zu diesem zu wechseln, und der zweite Schritt würde das bestimmte Fenster verwenden. (Sie müssten (a) und (b) als allgemeinen Mechanismus definieren.)

Auch in diesem Fall unterscheidet sich mein Vorschlag wahrscheinlich von dem, was andere vorschlagen, da er nicht versucht, Fensterauswahl mit Anzeigebefehl zu kombinieren. Sie sind sequentiell gekoppelt, aber nicht in einem Befehl zusammengefasst.

    
Drew 06.06.2014 14:48
quelle

Tags und Links