我最近了解到,如果我使用 分页文件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 -在这种情况下,“-”表示从标准输入读取输入)。
如前所述,您不能编辑输入流。
解决方法很明显:从内部将流保存到文件less并打开保存的文件。要在查看时执行此操作,请按s并给出文件名。然后退出less并手动打开文件,或者,仍然在 中less,键入:e并给出刚刚保存的文件的名称。