减少输入和编辑:“无法编辑标准输入”错误。解决方法?


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 2011年

您为什么回滚我的编辑?标题不应该是个问题吗?
约翰

1
抱歉@John,我看不到您的修改。我对标题进行了编辑,以阐明我对解决此问题最感兴趣。我认为标题是:Piping into less and editing: “cannot edit standard input” error. Workarounds?很清楚。为什么不这样认为呢?
阿梅里奥·瓦兹克斯·雷纳

这是可以理解的。尽管我假设如果您要问为什么会出错,但是很显然,您需要一种解决方法。
约翰,

我同意,尽管到目前为止投票最多的答案why仅针对而不是workarounds,所以我增加了重点。
阿梅利奥·瓦兹克斯·雷纳

Answers:


5

如前所述,您无法编辑输入流。

解决方法非常明显:将流从内部保存到文件中,less然后打开保存的文件。要在查看时执行此操作,请按s并指定文件名。然后,退出less并手动打开文件,或者仍然从内部less键入:e并提供您刚刚保存的文件的名称。


15

一个好的解决方法是将输出从less传递到编辑器,例如,在“ echo foo | less”之后,您可以执行以下操作:

g|$vim -

g将跳到文件/输入的第一行,|将调用“管道”动作,$是标记(“结束”),然后是将范围管道输送到的命令(vim -在这种情况下,“-”表示从stdin读取输入)。


1
很好,谢谢!
西蒙·皮卡

5

它的意思与所说的完全一样-您只能以这种方式(从中less)编辑磁盘上的文件。如果您通过管道传输流程的输出,则该流程STDOUT将进入STDINfor less;没有要编辑的文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.