我最近了解到,如果我使用 分页我的文件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
进入STDIN
for less
;没有要编辑的文件。