Intereting Posts
sort и ls – почему не заглавные буквы отсортированы в первую очередь? ls не отображает скрытый файл (OS X) Установленный Linux Mint в системе с двойной загрузкой. Не удается загрузить Windows 7 Проблема с использованием wget для создания статического архива веб-сайта Можно ли увидеть сообщения, отображаемые при загрузке сервера с удаленного компьютера? Как точно выполнить команды grep? Создание небольших файлов записей из большой группы файлов записи Переместить условия «если» в переменные скрипт bash для ранжирования файлов на основе сортировки столбца i3wm: как заставить несколько мониторов переключаться между рабочими областями в одной привязке Как обернуть команды iptables вокруг сервера Ruby webrick, перемещаясь вверх и вниз в одной команде / скрипте? Как найти конкретный патч для файла ядра Не является ли страницей режима кэширования серьезной ошибкой? Экспорт двух nfs с разных серверов, установленных в одной точке монтирования Выделение защищенной памяти

Трубопроводы в меньшем количестве и редактирование: ошибка «невозможно отредактировать стандартный вход». Обходные?

Недавно я узнал, что если у меня less файлов, я могу нажать v и открыть буфер в Emacs. Это работает до тех пор, пока я правильно настроил переменную среды $EDITOR , которая в моем случае у меня есть:

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

Вышесказанное дает мне возможность загружать emacs в терминал, который работает less .

Тем не менее, трюк выше не работает, когда команды трубопроводов less . При этом less жалуется на следующее сообщение:

 Cannot edit standard input (press RETURN) 

Мой вопрос: почему это происходит? Но самое главное, есть ли какое-нибудь обходное решение ?

Как уже было сказано, вы не можете редактировать входной поток.

Обходной путь довольно очевиден: сохраните поток в файл изнутри и откройте сохраненный файл . Чтобы сделать это во время просмотра, нажмите s и укажите имя файла. Затем либо выйдите из less либо откройте файл вручную или, еще изнутри, введите :e и укажите имя файла, который вы только что сохранили.

Хорошим обходным путем является то, что вы можете выводить результат меньше, чем ваш редактор, например, после «echo foo | less», который вы можете сделать:

 g|$vim - 

g перейдет в первую строку файла / ввода, | будет вызывать действие «pipe», $ – знак («конец»), за которым следует команда, чтобы передать диапазон в ( vim - в этом случае, когда «-» означает чтение ввода из stdin).

Это означает именно то, что он сказал – вы можете редактировать файл, который находится на диске таким образом (из less ). Если вы передали результат процесса, его STDOUT переходит в STDIN less ; нет файла для редактирования.