"emacs: stdin은 tty가 아닙니다"

"emacs: stdin은 tty가 아닙니다"

나는 팔로우한다https://unix.stackexchange.com/a/43460/674: 뒤쪽에

$ locate -i linux | less

을 입력했지만 g|$emacs -Emacs less에서는 아무 것도 열리지 않고 터미널에 다음과 같이 표시됩니다.

emacs: standard input is not a tty

그게 무슨 뜻이야?

g|$emacs -nw - 아니요. 그런데 GUI가 아닌 터미널에서 emacs를 사용하고 싶습니다.

어떻게 해야 하나요?

답변1

시도해 보세요 locate ... > file && emacs file또는 시도해 locate -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에서 엽니다.

관련 정보