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

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

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

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

上面的内容使我能够在运行的终端中加载 emacs less

然而,上面的技巧在以下情况下不起作用:管道命令到less.执行此操作时,less会抱怨以下消息:

Cannot edit standard input (press RETURN)

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

答案1

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

g|$vim -

g将跳转到文件/输入的第一行,|将调用“管道”操作,$是标记(“结束”),后跟将范围通过管道传输到的命令(vim -在本例中,其中“-”表示从 stdin 读取输入)。

答案2

正如已经说过的,您无法编辑输入流。

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

答案3

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

相关内容