“emacs:标准输入不是 tty”

“emacs:标准输入不是 tty”

我跟着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 filetry locate -i linux > file && emacs file

假设您想将临时文件命名为“file”或进入emacs并执行 mx shell ret,然后locate -i linux ret 或 mxlocate ret。

答案2

您链接到的线程的已接受答案是正确的(该线程中的其他答案也是如此)。

为了给任何从谷歌来到这个帖子的人总结一下,OP提到了链接线程中的这个特定答案它使用g|$vim -内部命令将 的less所有内容通过管道传输到的通道。lessvimstdin

然而,基于此线程的答案,似乎不可能从stdinin读取文本,这就是为什么这个问题的答案是当确定使用而不是.emacs时输出到临时文件。emacsvim

答案3

请参阅 StackOverflow 上的这个问题:减少通过管道传输至 Emacs- 特别是请参阅答案事件_jr,他在这里提到了他制作的一个包:电子水槽。简短的描述是——使用 emacsclient 将 shell 命令的输出传输到 Emacs 缓冲区中

我相信这emacsclient确实适用于终端版本emacs

e-sink每天都使用(在 GUI 版本中)并且喜欢它——不过,为了满足我的使用需求,我稍微修改了它以在每次调用时擦除缓冲区。

答案4

无法使用 emacs 从 std 构造缓冲区。您可以执行相反的操作并从 emacs 内启动locate 和 less,但反之则不行。

否则,索尔的想法(以及您引用的帖子中接受的答案)是正确的;将输出保存到文件并在 emacs 中打开它。

相关内容