2008-10-12 14 views
12

Macht meine Frage Sinn? Wenn Sie Vim oder Emacs verwenden, werden Sie feststellen, dass die Schnittstelle die Code-Darstellung des Zustands der Datei darstellt, die Sie im Puffer bearbeiten. Die Datei ist der Speicher auf der Festplatte, aus dem Sie einen Puffer füllen oder einen Puffer schreiben können. All diese Dinge, die ein Programmierer wissen würde, aber wenn er nur Text bearbeitet, warum wird er bloßgestellt? Jeder neuere Editor sagt nur "Hier ist eine Datei. Bearbeiten Sie sie."Warum zeigen alte Editoren wie Vim und Emacs den Unterschied zwischen einer Datei und einem Puffer in der Schnittstelle?

Ja, ich verstehe die technische Bedeutungen, aber das ist nicht meine Frage. Dies ist eine Frage, nicht einmal, ob es eine gute Idee ist, es zu tun oder nicht. Vim und Emacs sind unsere beiden ältesten heute gebräuchlichen Editoren, und sie teilen dieses Verhalten. Ich kenne keinen neuen Editor, der das Gleiche tut. Wann haben die Redakteure damit aufgehört und warum?

+0

Ich bekomme die Frage nicht. Ich benutze jeden Tag vim, aber sehe dieses Geschäft nicht mit Puffern. Es ist wie bei jedem Editor, was Sie bearbeiten, wird erst beim Speichern in Datei geschrieben. – freespace

+0

Ich bekomme auch die Frage nicht. "Wann haben die Redakteure damit aufgehört und warum?" Kürzlich und weil es einfacher ist. Was macht es aus? Welches Problem hast du? Was kannst du nicht tun? –

+0

Ich habe die informative Antwort von Just Some Guy gelesen, und ich benutze vim jeden Tag, und ich bekomme immer noch nicht die Frage. Wie stellen sie den Unterschied dar? Indem man ein wenig [+] setzt, wenn der Puffer geändert wird? –

Antwort

30

Für den Anfang verwendet Emacs viele Puffer, die nicht mit jeder Datei verknüpft sind. Jedes Mal, wenn Sie ein Verzeichnis öffnen, Ihre E-Mails lesen, ein Terminal öffnen, ein Programm kompilieren, eine interaktive Python-Sitzung starten oder eine Verbindung zu einer Datenbank herstellen, erhalten Sie einen Puffer. Daher ist die grundlegende Arbeitseinheit von Emacs ein Puffer und keine Datei, und die gleiche Logik gilt für Vim.

Neue Anwendungen, die nur bearbeiten Dateien machen keinen Unterschied, weil jeder Bildschirm oder Fenster oder Registerkarte direkt eine Datei darstellt. Leistungsfähigere Anwendungen wie Emacs und Vim sind in dieser Hinsicht viel flexibler.

+1

Um das hinzuzufügen - sowohl Emacs als auch Vim können mit Dingen umgehen, die keine Dateien sind, mit denen Sie interagieren können, so wie sie waren. In vim können Sie einen Puffer auf die Version auf der Festplatte verteilen - aber das Diff ist keine Datei selbst. Die meisten "modernen" Editoren können solche Dinge nicht tun oder willkürliche Grenzen setzen. – Zathrus

+0

+1 zu Zathrus's Punkt. In der Lage zu sein, eine interaktive Sitzung mit Ihrem Interpreter, der Befehlszeile, dem Verzeichnis (oder irgendetwas anderem) als Text zu bearbeiten, ist extrem leistungsfähig. –

+0

Besonders wenn es die gleichen Tastenanschläge verwendet, die Sie bereits für die Textbearbeitung gelernt haben. Sobald Sie gut darin sind, können Sie überall dieselben Fähigkeiten anwenden. –

0

Ich denke, die neuen Redakteure haben es aus den von Ihnen genannten Gründen aufgegeben, dass es eine Abstraktion ist, die nur im Weg steht. Auch die meisten modernen Editoren können unbegrenzt rückgängig gemacht werden, so dass die Idee des "Puffers" quasi implizit ist.

+0

Ich glaube, du verstehst das Wort" Puffer "falsch. – Rich

+0

Ich denke auch, dass Sie die "unbegrenzten" Rückgängig machen anderer Redakteure überschätzt und die "begrenzte" Undo von Vim oder Emacs unterschätzt. –

0

Ich denke, ich bin nur ein alter fogy (im hartnäckigen vim camp), aber die anderen Bearbeitungspakete, wie MS Word oder Open Office, behalten den Unterschied zwischen der Kopie der Datei, die ich bearbeite und die letzte gespeicherte Version. Das ist von unschätzbarem Wert - ich möchte nicht, dass der Redakteur meine letzte gute Version zertrampelt, bis ich dazu bereit bin. In der Tat gibt es eine gute Chance (sagen wir eins zu tausend), dass ich eine neue Datei mit dem Puffer erstellen werde, an dem ich gerade arbeite.

Auf der anderen Seite ist auch die Möglichkeit nützlich, ein Dateibild durch Lesen mehrerer Dateien (entweder mehrere Kopien derselben Datei oder Kopien mehrerer verschiedener Dateien) zu erstellen. In anderen Dokumenten gibt es ähnlich ähnliche Möglichkeiten.

So könnte ich den Punkt vermissen - ich weiß nicht, auf welche Editoren Sie beziehen, um die Unterscheidung zu entfernen. Aber ich denke, dass alle Editoren die Unterscheidung zwischen der Kopie der Datei, die Sie bearbeiten, und der letzten Version, die auf der Festplatte gespeichert wird, beibehalten.

+0

Sie entfernen die Unterscheidung nicht genau. Sie spülen nicht sofort jeden Tastendruck auf die Festplatte. Sie verwenden jedoch keine anderen Begriffe. Sie nennen nichts einen "Puffer" es gibt nur gespeicherte Dateien und nicht gespeicherte Dateien. – ironfroggy

6

Da mehrere Puffer können Sie unterschiedliche Ansicht der gleichen Datei zeigen. Ich kenne keine anderen Redakteure, aber das gilt für Emacs. Und was meinst du genau mit Old?

1

Als Anwendungen begannen, von Nicht-Geeks, die sich nicht mit irrelevanten Details belästigen wollten, stark in Anspruch genommen zu werden.

-2

Da Entwickler dieser Editoren nicht interessiert, Implementierungsdetails von Benutzern zu verbergen.

10

OK, hier ist meine seltsame philosophische Antwort:

weil spät zwischen dem Puffer im Editor und die tatsächlichen konkrete Sache Bindung an dem Sie arbeiten, gibt der Bearbeitung mehr Flexibilität und Leistung Umwelt.

Denken Sie, das ist veraltet?Ein Ort, wo die Idee mit einer Rache zurück ist, ist in der Browser, wo Sie 1-1 Korrespondenz zwischen Tabs und Webseiten haben. Stattdessen können Sie innerhalb jeder Registerkarte zwischen mehreren Seiten vor- und zurückblättern. Niemand würde versuchen, eine Schnittstelle vom MDI-Typ zum Internet zu machen, wo jede Seite ihr eigenes inneres Fenster hatte. Es wäre unglaublich fummelig zu benutzen. Es wäre einfach nicht Skala.

Ich persönlich denke, IDEs werden heutzutage viel zu kompliziert, und die statische Bindung zwischen Dokumenten und Puffern ist ein Grund dafür. Ich erwarte irgendwann einen Durchbruch, wenn sie zum browserähnlichen Registerkarten-Puffermodell gehen, wo:

a) Sie in der Lage sein werden, zwischen mehreren Akten innerhalb des gleichen Zwischenspeichers/Vorsprunges (und dort zu verkehren) ‚ll eine back-Taste etc.)

b) sind die generischen Puffer in der Lage, jede Art zu halten von Daten: Source-Code, Befehlszeile, dynamisch generierte grafische Ausgabe, Projektskizze usw.

Mit anderen Worten, viele der Vim/Emacs-Modell, außer optimiert, um mehr in Einklang mit Entdeckungen, die Browser machen.