Mehrere Puffer, gleiche Datei, unterschiedliche Einstellungen

10

Ist es möglich, eine Datei gleichzeitig unter verschiedenen Einstellungen zu bearbeiten? Genauer gesagt möchte ich mehrere Puffer in derselben Instanz von Vim haben, die denselben Inhalt haben (das Ändern eines Puffers wirkt sich sofort auf den Inhalt des anderen Puffers aus), aber unterschiedliche Cursorpositionen, unterschiedliche Markierungen, unterschiedliche Syntaxhervorhebungen usw.

Häufige Anwendungsfälle sind das unabhängige Bearbeiten verschiedener Teile derselben Datei (ohne z. B. das Aufrufen des visuellen Modus in einer Instanz, um die aktuelle Auswahl des visuellen Modus in der anderen Instanz zu unterbrechen) und das Bearbeiten von Dateien im gemischten Format (z. B. HTML und Javascript), ohne dass die Einstellungen geändert werden müssen . (Ein alternativer Ansatz für den zweiten Anwendungsfall besteht darin, die Einstellungen automatisch basierend auf der Cursorposition zu ändern. Dies ist jedoch für diese Frage nicht möglich.)

Ein Herausgeber, dessen Erwähnung zugegebenermaßen einen Schock auslösen könnte, nennt dies „indirekte Puffer“.

Gilles 'SO - hör auf böse zu sein'
quelle

Antworten:

2

Wenn Sie mehrere Fenster verwenden, um denselben Puffer anzuzeigen, können Sie verschiedene Teile eines Puffers anzeigen, bearbeiten, auswählen usw.

Die Hervorhebung der Syntax ist komplizierter, je nachdem, was genau Sie möchten. Vim unterstützt bereits das Hervorheben verschiedener Teile eines Puffers mit unterschiedlicher Syntax. Wenn Sie beispielsweise über einen HTML-Dateityppuffer verfügen, werden <style>Tags als CSS, <script>Tags als Javascript usw. hervorgehoben. Verwenden Sie dazu den :syn includeBefehl und definieren Sie die relevanten Syntaxbereiche, auf die die Syntax angewendet werden soll.

Eine Alternative besteht darin, mit dem :ownsyntaxBefehl die Syntaxhervorhebung anzugeben, die für ein bestimmtes Fenster verwendet wird.

Markierungen sind der klebrige Punkt. Die Kleinbuchstaben sind pufferspezifisch und die Großbuchstaben sind global, es gibt jedoch keine fensterspezifischen Markierungen.

Jamessan
quelle
1
Wenn ich mehrere Fenster verwende, müssen diese dann ständig auf dem Bildschirm angezeigt werden? Was passiert, wenn ich ein Fenster schließe, während ein anderes Fenster denselben Puffer anzeigt? Ist die Cursorposition in diesem Fenster verloren? Gibt es etwas Ähnliches :ownsyntaxfür andere Einstellungen wie Einrückung, Compiler-Befehl usw.?
Gilles 'SO - hör auf böse zu sein'
@Gilles können Sie zwei Fenster haben , die nicht immer auf dem Bildschirm zusammen , indem sie in separaten Registerkarten platzieren, so dass Fenster spezifische Einstellungen Cursorposition beibehalten, etc. Dies könnte helfen, je nach Ihrem spezifischen Anwendungsfall.
Rich