「emacs:stdinはttyではありません」

「emacs:stdinはttyではありません」

フォローするhttps://unix.stackexchange.com/a/43460/674:後ろに

$ locate -i linux | less

と入力しましたが、g|$emacs -Emacslessでは何も開かずに端末に次のように表示されます。

emacs: standard input is not a tty

それはどういう意味ですか?

g|$emacs -nw - いいえ。ところで、GUIではなく端末でemacsを使用したいと思います。

どうすればいいですか?

答え1

試してみlocate ... > file && emacs filelocate -i linux > file && emacs fileくださいtry locate -i linux > file && emacs file

emacs一時ファイルの名前を「file」に指定するか、mx shell retに移動して実行し、-i linux retまたはmxlocate retを見つけようとします。

答え2

リンクしたスレッドに承認された回答そうです(このスレッドの他の答えと同様)。

Googleがこの投稿にアクセスしたすべての人をまとめるために、OPは次のよ​​うに述べました。スレッド内のこの特定の回答へのリンクg|$vim -内部コマンドを使用してlessすべてをチャネルにパイプします。lessvimstdin

しかし、このスレッドへの回答、inでテキストを読むことは不可能です。したがって、この質問に対する答えはstdin。代わりに使用時にemacs一時ファイルとして出力することです。emacsvim

答え3

StackOverflow で次の質問をご覧ください。Emacsで配管を減らします。- 特に回答を見るevent_jr、彼は自分が作ったパッケージに言及しています。電子シンク。簡単な説明は -Emacsclientを使用してシェルコマンドの出力をEmacsバッファに転送する

私はこれがemacsclientターミナルバージョンで動作すると思いますemacs

私はe-sink毎日使用していて(GUIバージョンで)気に入っています。しかし、使い方に合わせて呼び出すたびにバッファを消去するように少し修正しました。

答え4

Emacsを使用してstdからバッファを作成することはできません。 Emacs内で反対のタスクを実行し、LocateとLessを実行できますが、その逆の場合は不可能です。

それ以外の場合、Saulのアイデア(および参照された投稿の許可された回答)は正しいです。出力をファイルに保存し、emacsで開きます。

関連情報