Piping in weniger und Bearbeitung: Fehler "Standardeingabe kann nicht bearbeitet werden". Problemumgehungen?

9

Ich habe kürzlich erfahren, dass ich den Puffer in Emacs lessdrücken vund öffnen kann , wenn ich meine Dateien mit seiten. Dies funktioniert, solange ich die Umgebungsvariable $EDITORkorrekt eingerichtet habe. In meinem Fall habe ich sie wie folgt:

export EDITOR='env TERM=xterm-256color emacs -nw'

Das Obige gibt mir die Möglichkeit, Emacs in das laufende Terminal zu laden less.

Doch über den Trick funktioniert nicht , wenn Rohrleitungen Befehle an less. Wenn dies zu tun, lessbeschwert mit der folgenden Meldung:

Cannot edit standard input (press RETURN)

Meine Frage ist, warum passiert das? Aber was am wichtigsten ist, gibt es eine Problemumgehung ?

Amelio Vazquez-Reina
quelle
2
Sie sollten lernen, wie Sie emacsclient verwenden , mit dem Sie Dateien in einer bereits laufenden Kopie von Emacs bearbeiten können. Emacs ist nicht der am schnellsten startende Editor.
cjm
Warum haben Sie meine Bearbeitung zurückgesetzt? Soll der Titel nicht eine Frage sein?
John
1
Sorry @John, ich habe deine Bearbeitung nicht gesehen. Ich habe den Titel bearbeitet, um zu verdeutlichen, dass ich hauptsächlich an Problemumgehungen für dieses Problem interessiert bin. Ich denke, der Titel wie er ist: Piping into less and editing: “cannot edit standard input” error. Workarounds?ist klar. Warum anders denken?
Amelio Vazquez-Reina
Das ist verständlich. Obwohl ich davon ausgehen würde, dass wenn Sie fragen, warum Sie den Fehler erhalten haben, es offensichtlich sein sollte, dass Sie eine Problemumgehung wünschen.
John
Ich stimme zu, obwohl die bisher am meisten gewählte Antwort die whyeinzige und nicht die einzige workaroundsbetrifft, fügte ich die Betonung hinzu.
Amelio Vazquez-Reina

Antworten:

5

Wie bereits gesagt, können Sie einen Eingabestream nicht bearbeiten.

Die Problemumgehung liegt auf der Hand: Speichern Sie den Stream von innen in einer Datei lessund öffnen Sie die gespeicherte Datei . Drücken Sie dazu während der Anzeige sund geben Sie einen Namen für eine Datei an. Dann fährt man entweder lessund öffnen Sie die Datei von Hand, oder, noch von innen less, geben :eund geben Sie den Namen der Datei , die Sie gerade gespeichert.

rozcietrzewiacz
quelle
15

Eine gute Problemumgehung besteht darin, die Ausgabe von less an Ihren Editor weiterzuleiten, z. B. nach "echo foo | less" können Sie Folgendes tun:

g|$vim -

gspringt in die erste Zeile der Datei / Eingabe, |ruft die Aktion "Pipe" auf, $ist die Markierung ("das Ende"), gefolgt vom Befehl zum Weiterleiten des Bereichs ( vim -in diesem Fall bedeutet "-") um die Eingabe von stdin zu lesen).

blau gefärbt
quelle
1
Super, danke!
Simon Pickup
5

Es bedeutet genau das, was es gesagt hat - Sie können nur eine Datei, die sich auf der Festplatte befindet, auf diese Weise (von less) bearbeiten . Wenn Sie die Ausgabe eines Prozesses geleitet, dessen STDOUTbegibt sich in STDINfür less; Es gibt keine zu bearbeitende Datei.

Aaron D. Marasco
quelle