管道进入较少并编辑:“无法编辑标准输入”错误。解决方法?

Ame*_*ina 14 less emacs

我最近了解到,如果我使用 分页文件less,我可以v在 Emacs 中按下并打开缓冲区。只要我$EDITOR正确设置了环境变量,这就会起作用,在我的情况下,我将其设置为:

export EDITOR='env TERM=xterm-256color emacs -nw'
Run Code Online (Sandbox Code Playgroud)

以上使我能够在运行less.

但是,当将命令通过管道传输到less. 执行此操作时,会less显示以下消息:

Cannot edit standard input (press RETURN)
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么会发生这种情况?但最重要的是,有什么解决方法吗?

blu*_*yed 23

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

g|$vim -
Run Code Online (Sandbox Code Playgroud)

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


roz*_*acz 8

如前所述,您不能编辑输入流。

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


Aar*_*sco 5

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