Emacs - Mehrere Spalten ein Puffer

165

Ich versuche, Assembly-Code zu bearbeiten, der in der Regel in langen, aber dünnen Listen formatiert ist. Ich möchte in der Lage sein, einige der Hektar horizontalen Raums zu nutzen, die ich habe, und gleichzeitig mehr Code auf dem Bildschirm zu sehen. Gibt es eine Methode, mit der Emacs (oder ein anderer Editor) mehrere Spalten anzeigt, die alle auf denselben Puffer verweisen?

Cx 3 (emacs) und: vsplit (vim) eignen sich hervorragend für mehrere separate Ansichten in den Code, aber ich möchte, dass er von einer Spalte zur anderen fließt (wie Text in einer Zeitung).

user119857
quelle
1
Cx 3 und: vsplit eignen sich hervorragend für mehrere separate Ansichten in den Code, aber ich möchte, dass er von einer Spalte zur anderen fließt (wie Text in einer Zeitung)
user119857
1
Vielen Dank! Ich habe mich in die 4-6-Spalten-Code-Anzeige verliebt, bei der ich versucht habe, meinen gesamten Code auf 30-40 Zeichen zu formatieren, und ich liebe das Ergebnis sehr - indem ich alle Zeilen kurz mache, nicht nur die natürlich kurzen, viel weniger Platz wird verschwendet und mein gesamter Bildschirmbereich wird zum Anzeigen von Text verwendet. Außerdem werden Codeblöcke zweidimensionaler, was das visuelle Verständnis und die strukturelle Überwachung erleichtert.
Erik Kaplun

Antworten:

248

Siehe Folgemodus . Auszug:

Der Follow-Modus ist ein Nebenmodus, in dem zwei Fenster, die denselben Puffer anzeigen, als ein einziges großes „virtuelles Fenster“ gescrollt werden. Um den Follow-Modus zu verwenden, wechseln Sie zu einem Frame mit nur einem Fenster, teilen Sie ihn mit Cx 3 in zwei nebeneinander liegende Fenster auf und geben Sie dann den Mx-Follow-Modus ein. Von da an können Sie den Puffer in einem der beiden Fenster bearbeiten oder durch eines der beiden Fenster scrollen. das andere Fenster folgt ihm. Wenn Sie im Verfolgungsmodus einen Punkt außerhalb des in einem Fenster sichtbaren Teils und in den im anderen Fenster sichtbaren Teil verschieben, wird das andere Fenster ausgewählt. Behandeln Sie die beiden erneut so, als wären sie Teile eines großen Fensters.
Huaiyuan
quelle
3
Kann ich dies mit mehr als zwei Fenstern verwenden? Kann ich damit vier Fenster haben?
Yktula
Ich frage mich, ob es möglich ist, zwei Spalten derselben Quelle auf individuelle Weise zu bearbeiten, ohne sie in zwei Fenster aufzuteilen. Dies ist nicht das beste Beispiel, aber stellen Sie sich vor, ich habe eine Spalte für den Skriptcode und die andere für Kommentare. Wenn ich mich in der zweiten Spalte befinde, möchte ich die Eingabetaste drücken und in der nächsten Zeile, aber in der zweiten Spalte fortfahren. Ist das mit Emacs oder einem anderen Texteditor möglich?
sw.
Es ist sehr nützlich, lange lange Funktionen oder Methoden zu bearbeiten. Ich finde immer diesen Modus und öffne zwei Puffer und mache dies selbst, danke Huaiyuan
Yuan He
17

Ich verwende diese Funktion zum Aufrufen follow-mode, obwohl eine Anpassung für eine andere Bildschirmgröße erforderlich wäre:

;;; I want a key to open the current buffer all over the screen.
(defun all-over-the-screen ()
  (interactive)
  (delete-other-windows)
  (split-window-horizontally)
  (split-window-horizontally)
  (balance-windows)
  (follow-mode t))
Kragen Javier Sitaker
quelle
Plus 1 für den Hinweis (Balance-Fenster) allein! Ich denke, Sie könnten es eine parametrische Anzahl von Malen teilen und die Funktion interaktiv machen. Auch die Einstellung scroll-marginauf 0macht in Sinn follow-mode.
Erik Kaplun
2

Vim kann dies mit :vsplit- und Sie können denselben Puffer in mehreren "Fenstern" öffnen (die eigentlich Abschnitte innerhalb eines einzelnen "Fensters" sind).

Dokumentation hier

brettkelly
quelle
3
emacs kann das auch, wie in der frage erwähnt, aber das wird nicht gefragt.
Justinhj
1
Kombiniere das mit :scrollbindund du bist da.
Bastibe
@Kragen - Die Methode dazu ist: 1. Teilen Sie das Fenster vertikal, sodass ein einzelner Puffer in zwei Fenstern sichtbar ist. 2. Scrollen Sie im zweiten Fenster, sodass die erste Zeile im zweiten Fenster nach der letzten Zeile im ersten Fenster kommt. 3. Befehl :set scrollbindin jedem Fenster ausgeben . Jetzt scrollen die Fenster wie gewünscht zusammen. (Hinweis: scrollopt muss die Option 'ver' enthalten.)
Herbert Sitz
Hmm, das macht Arbeit. Cool! Vielen Dank! Jemand sollte ein vim-Skript schreiben, um dies automatisch zu tun.
Kragen Javier Sitaker
-1

Ein kurzer Blick auf das Emacs-Wiki zeigt keinen Modus, wie Sie ihn beschreiben. Es sollte jedoch nicht zu schwierig sein, einen zu schreiben ... Sie müssen nur das Fenster mit Cx 3 teilen und den Text im anderen Fenster nach unten verschieben. Wenn Sie den Text verschieben, müssen Sie dasselbe in das andere Fenster verschieben. ..

Probleme können auftreten, wenn Sie den unteren Rand des Puffers erreichen. Möchten Sie, dass der Cursor sofort zum anderen Fenster oben wechselt?

Hmm, vielleicht ist es nicht so einfach. Aber es sollte noch machbar sein ...

Brian Postow
quelle
1
... und so wird Elisp zur Liste der Dinge hinzugefügt, die ich lernen muss :) Vielen Dank, Brian;)
user119857
Offensichtlich hat es schon jemand gemacht, aber ja, elisp ist ein erstaunliches Werkzeug!
Brian Postow
-5

Dies ist das Standardverhalten von Emacs beim Teilen des Fensters (Cx 3 für vertikales Teilen). Sie erhalten zwei Spalten, in denen der aktuelle Puffer geöffnet ist

zweite
quelle
1
In diesem Fall befindet es sich jedoch nicht im Folgemodus. Der Follow-Modus stellt sicher, dass jeder Puffer auf der "nächsten Seite" positioniert wird, sodass Sie den Puffer lesen können, indem Sie Ihre Augen bewegen, anstatt den Punkt zu bewegen.
Jrockway
-7

Verwenden Sie die vertikale Aufteilung mit Cx 3. Dadurch wird der aktuelle Puffer in zwei Spalten aufgeteilt, zwischen denen Sie mit Cx o wechseln können.

Nathaniel Flath
quelle
2
Dies fließt nicht automatisch von einer Spalte zur anderen.
kmarsh