Розбір і менша редагування: помилка "не може редагувати стандартний ввід". Обхідні шляхи?


9

Нещодавно я дізнався, що якщо я переглядаю свої файли less, я можу натискати vта відкривати буфер у Emacs. Це працює, якщо у мене змінна середовища $EDITORналаштована правильно, і в моєму випадку я це:

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

Вище сказане дає мені можливість завантажувати emacs в терміналі, який працює less.

Однак, вищевказаний трюк не працює, коли з'єднання команд до less. Роблячи це, lessскаржиться на таке повідомлення:

Cannot edit standard input (press RETURN)

Моє запитання: чому це відбувається? Але найголовніше, чи існує якесь вирішення цього питання ?


2
Вам слід навчитися використовувати emacsclient , що дозволить вам редагувати файли у вже запущеній копії Emacs. Emacs не найшвидший редактор.
cjm

Чому ви відкатали мою редакцію? Чи не заголовок повинен бути питанням?
Джон

1
Вибачте @John, я не бачив ваших змін. Я редагував заголовок, щоб уточнити, що мене найбільше цікавлять шляхи вирішення цієї проблеми. Я думаю, що заголовок такий, як він є: Piping into less and editing: “cannot edit standard input” error. Workarounds?зрозумілий. Чому ви думаєте інакше?
Амеліо Васкес-Рейна

Це зрозуміло. Хоча я б припускав, що якщо ви запитаєте, чому ви помилилися, має бути очевидним, що ви хочете вирішити проблему.
Джон

Я погоджуюсь, хоча відповідь, яка зараз найбільше голосує, стосується whyєдиної, а не тієї workarounds, тому я додала акцент.
Амеліо Васкес-Рейна

Відповіді:


5

Як уже було сказано, ви не можете редагувати вхідний потік.

Вирішення цілком очевидно: збережіть потік у файл зсередини lessта відкрийте збережений файл . Для цього під час перегляду натисніть sі вкажіть ім’я файлу. Потім вийдіть lessі відкрийте файл вручну, або, все ще зсередини less, введіть :eі дайте ім’я файлу, який ви тільки що зберегли.


15

Хорошим вирішенням є передача вихідного файлу на ваш редактор менше, наприклад, після "echo foo | less" ви можете зробити:

g|$vim -

gперейде до першого рядка файлу / вводу, |викликатиме дію "труба", $є позначкою ("кінцем"), за якою слідує команда передати діапазон у ( vim -у цьому випадку, де означає "-" прочитати вхід з stdin).


1
Дивовижне, дякую!
Simon Pickup

5

Це означає саме те, що він сказав - ви можете редагувати файл, який є на диску таким чином (з less). Якщо ви конвеєр виведення процесу, його STDOUTзбирається в STDINпротягом less; немає файлу для редагування.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.