Ich habe kürzlich erfahren, dass ich den Puffer in Emacs less
drücken v
und öffnen kann , wenn ich meine Dateien mit seiten. Dies funktioniert, solange ich die Umgebungsvariable $EDITOR
korrekt 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, less
beschwert 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 ?
Piping into less and editing: “cannot edit standard input” error. Workarounds?
ist klar. Warum anders denken?why
einzige und nicht die einzigeworkarounds
betrifft, fügte ich die Betonung hinzu.Antworten:
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
less
und öffnen Sie die gespeicherte Datei . Drücken Sie dazu während der Anzeiges
und geben Sie einen Namen für eine Datei an. Dann fährt man entwederless
und öffnen Sie die Datei von Hand, oder, noch von innenless
, geben:e
und geben Sie den Namen der Datei , die Sie gerade gespeichert.quelle
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
springt 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).quelle
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, dessenSTDOUT
begibt sich inSTDIN
fürless
; Es gibt keine zu bearbeitende Datei.quelle