我跟着https://unix.stackexchange.com/a/43460/674: 后
$ locate -i linux | less
我输入g|$emacs -
,less
但 Emacs 中没有打开任何内容,终端显示:
emacs: standard input is not a tty
这意味着什么?
g|$emacs -nw -
也不行。顺便说一句,我想在终端中使用 emacs,而不是它的 GUI。
那我该怎么办呢?
答案1
尝试locate ... > file && emacs file
或尝试locate -i linux > file && emacs file
或try locate -i linux > file && emacs file
。
假设您想将临时文件命名为“file”或进入emacs
并执行 mx shell ret,然后locate -i linux ret 或 mxlocate ret。
答案2
您链接到的线程的已接受答案是正确的(该线程中的其他答案也是如此)。
为了给任何从谷歌来到这个帖子的人总结一下,OP提到了链接线程中的这个特定答案它使用g|$vim -
内部命令将 的less
所有内容通过管道传输到的通道。less
vim
stdin
然而,基于此线程的答案,似乎不可能从stdin
in读取文本,这就是为什么这个问题的答案是当确定使用而不是.emacs
时输出到临时文件。emacs
vim
答案3
请参阅 StackOverflow 上的这个问题:减少通过管道传输至 Emacs- 特别是请参阅答案事件_jr,他在这里提到了他制作的一个包:电子水槽。简短的描述是——使用 emacsclient 将 shell 命令的输出传输到 Emacs 缓冲区中。
我相信这emacsclient
确实适用于终端版本emacs
我e-sink
每天都使用(在 GUI 版本中)并且喜欢它——不过,为了满足我的使用需求,我稍微修改了它以在每次调用时擦除缓冲区。
答案4
无法使用 emacs 从 std 构造缓冲区。您可以执行相反的操作并从 emacs 内启动locate 和 less,但反之则不行。
否则,索尔的想法(以及您引用的帖子中接受的答案)是正确的;将输出保存到文件并在 emacs 中打开它。