Wie ZyX auf #vim sagte, klingt diese Frage wie "Warum bevorzugen Vim-Experten lecker gegenüber warm?" .
"Vim-Experten" bevorzugen keine Puffer gegenüber Registerkarten: Sie verwenden Puffer als Datei-Proxys und Registerkarten als Arbeitsbereiche. Puffer und Registerkarten haben unterschiedliche Zwecke, daher macht es keinen Sinn, einander vorzuziehen.
Das Problem mit Puffern und Registerkarten ist eine Verwirrung , die durch eine Kombination unabhängiger Fakten verursacht wird.
Die meisten "modernen" Texteditoren und IDEs verwenden eine Tabulatormetapher , um geladene Dateien darzustellen. Diese Metapher fungiert als Informationssystem - sie zeigt dem Benutzer, welche Dateien geöffnet sind und welchen Status sie haben - und als interaktives Gerät ermöglicht sie dem Benutzer, diese geöffneten Dateien zu bearbeiten (neu anzuordnen, auszuwählen, zu schließen ...). Trotz ihrer vielen Einschränkungen sind Registerkarten überall und die Leute sind an sie gewöhnt und erwarten sie überall.
Vim führte in 7.0 Registerkarten ein, mit denen Benutzer Ad-hoc- "Arbeitsbereiche" erstellen können. Nichts in ihren Funktionen, ihren spezifischen Optionen, ihren spezifischen Befehlen oder ihren :help
Abschnitten legt nahe, dass Registerkarten als Datei-Proxys verwendet werden könnten oder sollten.
Natürlich nichts außer dem Namen und dem Erscheinungsbild von "Registerkarten", was zu viel Verwirrung führt.
Ohne :set hidden
, das standardmäßig deaktiviert und nicht leicht zu finden ist, macht es Vim unmöglich, zu einem anderen Puffer zu wechseln, ohne den aktuellen zu schreiben oder seine Änderungen aufzugeben. Neue Benutzer, denen diese Option nicht bekannt ist, haben keine andere Wahl, als sich der Verwendung von Windows oder der nächstgelegenen "tab-ähnlichen" Funktion zuzuwenden, die sie finden können: Registerkarten.
"Registerkarte" ist eine unglückliche Namenswahl für diese Funktion, insbesondere in einer Zeit, in der die Idee dominiert wird, dass das Lesen von Dokumentation Zeitverschwendung ist.
In Vim sind Registerkarten eine Abstraktion, die auf Fenstern aufgebaut ist, selbst eine Abstraktion, die auf Puffern aufgebaut ist. Jede neue Ebene fügt nützliche Funktionen hinzu, schränkt jedoch Ihren Workflow ein.
Der "Pufferweg"
Bei einem pufferbasierten Workflow werden die Dateien, mit denen Sie arbeiten, auf eine einzige Dimension verteilt. Sie können durch Ihre Puffer blättern, Sie können auf einen bestimmten Puffer zugreifen, indem Sie einen Teil seines Namens (mit Abschluss) oder seiner Nummer eingeben. Sie können zwischen Puffern wechseln und sie ganz einfach als Ziel festlegen. Es gibt im Grunde keine Reibung.
Acht Puffer geöffnet, nur einer sichtbar:
Umschalten nach Nummer:
Nach Namen wechseln:
Puffer sind Vims Datei-Proxys. Wenn Sie in Dateien denken, denken Sie in Puffern.
Der "Fensterweg"
Bei einem fensterbasierten Workflow werden Ihre "Dateien" in derselben "virtuellen" Dimension verteilt, wie wenn Sie nur Puffer verwenden würden, und in zwei anderen "physischen" Dimensionen. Die kartesischen Räume, in denen sich diese Dimensionen befinden, sind jedoch fast vollständig voneinander getrennt: Das Verschieben in einen anderen Puffer bedeutet immer noch "Verschieben in eine andere Datei", das Verschieben in ein anderes Fenster jedoch nicht. Der Puffer, der der gewünschten Datei entspricht, kann in diesem Fenster angezeigt werden, er kann jedoch auch in einem anderen, möglicherweise auf einer anderen Registerkarte oder überhaupt nicht angezeigt werden.
Mit Windows wird das Navigieren zwischen geöffneten Dateien entweder mit 'switchbuf'
und zu komplex oder zu einfach :sb
. Meistens, weil Sie gezwungen sind, zwei Befehlssätze für das zu verwenden, was im Wesentlichen dasselbe ist: den Zugriff auf einen Puffer.
Windows hat ihre Verwendung, wie unten beschrieben, aber sie haben nicht das Zeug, Puffer im Workflow eines anderen zu ersetzen.
Hier arbeite ich an einem Vim-Farbschema. Die beiden Fenster sind unterschiedliche Ansichten desselben Puffers: Das obere dient als Referenz mit einer Tabelle der im Farbschema verwendeten Farbcodes, und im unteren Fenster arbeite ich:
Windows ist nicht als Datei-Proxy konzipiert und kann nicht zu einem solchen gemacht werden: Es handelt sich um "Container" oder "Ansichtsfenster", die Ihnen einen Blick in einen Puffer bieten sollen. Nicht mehr und nicht weniger.
Der "Tab-Weg"
Mit einem tabulatorbasierten Workflow versuchen Sie im Wesentlichen, die Benutzererfahrung nachzuahmen, die Sie von Ihrem vorherigen Editor gewohnt sind, während Sie die Natur der Registerkarten von Vim vollständig ignorieren. Wenn wir für einen Moment vergessen, dass diese Strategie im Allgemeinen sehr unproduktiv ist, ist es ebenso wie bei Windows unmöglich, Vim zu zwingen, dieses Paradigma "eine Datei = eine Registerkarte" einzuhalten, ohne viel Flexibilität zu verlieren .
Die Tabline arbeitet immer noch mit denselben Dateien wie oben und nimmt einen erheblichen Speicherplatz ein, der praktisch keinen Nutzen bringt. Alle meine Dateien und alle meine Registerkarten werden aufgerufen, javascript*.vim
sodass ich nicht 3gt
sicher sein kann, dass ich am richtigen Ort lande und es unmöglich ist, eine bestimmte Registerkarte mit Namen zu erreichen. Hinzu kommt, dass die Beschriftung sehr wenig hilfreich, aber durchaus logisch sein kann [Quickfix List]
. Da es keine praktische Möglichkeit gibt, eine Datei / einen Puffer an eine Registerkarte zu binden, bleibt Ihnen im Grunde nur eine praktische Möglichkeit, zwischen Registerkarten zu navigieren / Puffer / Dateien: Radfahren.
Und ja, meine Tabline ist mit nur 8 Tabs überfüllt. Stellen Sie sich vor, ich hätte 20!
Acht Puffer öffnen sich auf acht Registerkarten (falsch)
Zwei Registerkarten für zwei spezifische Aufgaben (rechts)
Registerkarten sind "Container" oder "Ansichtsfenster", die ein oder mehrere Fenster enthalten sollen, selbst auch "Container", die Puffer enthalten sollen.
Abschließend
"Vim-Experten" (nehmen wir an, ich kann sprechen, als wäre ich einer) bevorzugen keine Puffer gegenüber Tabs: Sie verwenden Vim nur so, wie es entworfen wurde, und sind mit diesem Design vollkommen zufrieden:
"Vim-Experten" haben 2, 30 oder 97 Puffer geladen und sind sehr froh, dass sie sich nicht mit der räumlichen Verteilung befassen müssen.
Wenn sie zwei Dateien vergleichen oder in einem Teil des aktuellen Puffers arbeiten müssen, während ein anderer als Referenz verwendet wird, verwenden "Vim-Experten" Windows, da sie auf diese Weise verwendet werden sollen.
Wenn sie eine Weile an einem separaten Teil des Projekts arbeiten müssen, ohne ihre aktuelle Ansicht zu beeinträchtigen, laden "Vim-Experten" eine brandneue Registerkarte.