Gibt es eine einfache Möglichkeit, alle Ausgaben im shell
Puffer zu leeren? Seit kurzem (ich glaube, Emacs 24.4 hat dies bereits) können *shell*
Puffer nicht bearbeitet werden. Sie verhalten sich ähnlich wie das typische Terminal, dh Sie können nur Text am Ende anhängen oder die letzte Ausgabe leeren, aber Sie können nicht Fügen Sie an einer beliebigen Stelle Text hinzu oder entfernen Sie einen Teil davon willkürlich. Es scheint, als würde mir etwas Wichtiges an dieser Verbesserung fehlen (?). Es macht es tatsächlich ärgerlicher. Ich suchte in den Dokumenten nach den *shell*
und *Messages*
Puffern, konnte aber keine Erwähnung der Frage finden.
Neben der ursprünglichen Frage: Was bringt diese Änderung? Für mich ist dies überhaupt keine Verbesserung. Wenn es also keinen "Haken" gibt, möchte ich ihn standardmäßig auf "Lesen / Schreiben" setzen.
Ich spreche natürlich von Emacs 24.4 , 25.0.50.1.
quelle
Messages
jetzt schreibgeschützt zu sein, aber ich sehe nicht, wie sich das auf Shell-Puffer bezieht.shell
Puffer war früher auch vollständig bearbeitbar. Das heißt, Sie können Text an jeder beliebigen Stelle löschen oder hinzufügen, während Sie jetzt nur noch Text am Ende anhängen und ihn auch nirgendwo anders entfernen können.*Messages*
verhält sich genauso.Antworten:
(erase-buffer)
Funktioniert nicht mit Comint- und Shell-Puffern, wenn diese schreibgeschützt sind.Hier ist der Defun, den ich ziemlich oft zum Löschen von Schalenpuffern verwende:
Sie können dies möglicherweise
s-k
in Ihren relevanten Modi binden , um das Löschverhalten von OSXs Terminal.app nachzuahmen.Update 11/2016
Irgendwo in der Emacs 25-Entwicklung (und auch in meinem neuesten Build, der "26.0.50.1" ist)
(comint-clear-buffer)
wurde hinzugefügtcomint-mode
, was eine prägnantere Version meines benutzerdefinierten Defuns ist. Hier ist die Quelle als Referenz:Diese integrierte Lösung funktioniert auch, wenn Sie haben
(setq comint-prompt-read-only t)
.quelle
M-x shell
M-x erase-buffer
funktioniert perfekt in einem Shell-Modus-Puffer in Emacs Trunk, und ich sehe keinen Grund, warum es auch in 24.4 nicht funktionieren sollte.(erase-buffer)
ich persönlich nicht arbeite. Ich habe(setq comint-prompt-read-only t)
in meiner Konfiguration, was ich nützlich finde, um die Eingabeaufforderung nicht zu überfrachten und(erase-buffer)
mich damit anzuschimpfen.*Messages*
Mit demkill-buffer
Befehl können Sie den Puffer auf die gleiche Weise wie immer bereinigen . Wenn das nächste Mal eine Nachricht signalisiert wird, wird der Puffer neu erstellt.Der Grund, warum dieser Puffer jetzt schreibgeschützt ist, besteht darin, dass ihm ein eigener Hauptmodus gewährt wurde , der von erbt
special-mode
, der schreibgeschützt ist. Die Vorteile dahinter sind mehrere.special-mode
ist zum Lesen konzipiert und verfügt daher über mehrere Tastenkombinationen, die für Puffer, die nicht zum Bearbeiten bestimmt sind, sehr praktisch sind.Ich bin mir nicht sicher, was
*shell*
mit irgendetwas zu tun hat. Aber wenn Sie es löschen möchten,M-x
erase-buffer
sollten Sie tun.quelle