Недавно я узнал, что если я буду публиковать свои файлы less
, я могу нажать v
и открыть буфер в Emacs. Это работает до тех пор, пока у меня $EDITOR
правильно установлена переменная окружения , которая в моем случае выглядит так:
export EDITOR='env TERM=xterm-256color emacs -nw'
Вышеуказанное дает мне возможность загружать emacs в работающий терминал less
.
Однако вышеприведенный прием не работает при передаче команд в less
. При этом less
жалуется со следующим сообщением:
Cannot edit standard input (press RETURN)
Мой вопрос: почему это происходит? Но самое главное, есть ли обходной путь к этому ?
Piping into less and editing: “cannot edit standard input” error. Workarounds?
понятно. Почему думаешь иначе?why
только одного, а не самогоworkarounds
, поэтому я добавил акцент.Ответы:
Как уже было сказано, вы не можете редактировать поток ввода.
Обходной путь вполне очевиден: сохраните поток в файл изнутри
less
и откройте сохраненный файл . Для этого во время просмотра нажмитеs
и введите имя файла. Затем либо выйдитеless
и откройте файл вручную, либо, по-прежнему изнутриless
, введите:e
и введите имя файла, который вы только что сохранили.источник
Хороший обходной путь - направить вывод from less в ваш редактор, например, после «echo foo | less» вы можете сделать:
g
перейдет к первой строке файла / ввода,|
вызовет действие "pipe",$
это метка ("конец"), за которой следует команда для направления диапазона (vim -
в данном случае, где "-" означает читать входные данные из стандартного ввода).источник
Это означает именно то, что сказано - таким образом вы можете редактировать только файл, находящийся на диске (из
less
). Если вы перенаправили вывод процесса,STDOUT
он будет использоватьсяSTDIN
дляless
; нет файла для редактирования.источник