덜 들어가서 편집 : "표준 입력을 편집 할 수 없습니다"오류. 해결 방법?


9

최근에 파일을 페이징하면 Emacs에서 버퍼를 less누르고 v열 수 있다는 것을 알게 되었습니다. 환경 변수가 $EDITOR올바르게 설정되어있는 한 작동합니다. 제 경우에는 다음과 같습니다.

export EDITOR='env TERM=xterm-256color emacs -nw'

위의 내용을 실행하면 터미널 내에서 emacs를로드 할 수 less있습니다.

그러나 명령을에 파이핑 할 때는 위의 트릭이 작동하지 않습니다 less. 이 작업을 수행 할 때 less다음 메시지가 표시됩니다.

Cannot edit standard input (press RETURN)

내 질문은 왜 이런 일이 발생합니까? 그러나 가장 중요한 것은 해결 방법이 있습니까?


2
이미 실행중인 Emacs 사본에서 파일을 편집 할 수있는 emacsclient 사용법을 배워야합니다 . Emacs는 가장 빠른 편집기가 아닙니다.
CJM

내 편집을 롤백 한 이유는 무엇입니까? 제목이 질문이 아닌가?
John

1
@John 죄송합니다. 편집 한 내용이 없습니다. 이 문제에 대한 해결 방법에 주로 관심이 있음을 명확히하기 위해 제목을 편집했습니다. 제목은 그대로입니다. Piping into less and editing: “cannot edit standard input” error. Workarounds?분명합니다. 왜 다르게 생각합니까?
Amelio Vazquez-Reina

이해할 수 있습니다. 왜 오류가 발생했는지 묻는다면 해결 방법을 원한다는 것이 분명해야합니다.
John

나는 지금까지 가장 많이 투표 된 답변이에 대한 것이 why아니라 유일한 주소에 대해서만 동의하지만, workarounds나는 강조점을 덧붙였다.
Amelio Vazquez-Reina

답변:


5

이미 말했듯이 입력 스트림을 편집 할 수 없습니다.

해결 방법은 매우 분명합니다. 스트림을 파일에서 파일로 less저장하고 저장된 파일을 엽니 다 . 보고있는 동안 s파일을 누르고 파일 이름을 지정하십시오. 그런 다음 less수동으로 파일을 종료 하고 열거 나 여전히에서 파일을 less입력 :e하고 방금 저장 한 파일의 이름을 지정하십시오.


15

좋은 해결 방법은 출력을 less에서 편집기로 파이프하는 것입니다. 예를 들어 "echo foo | less"다음에 수행 할 수 있습니다.

g|$vim -

g파일 / 입력의 첫 번째 줄로 이동하고 |, "pipe"조치를 호출하고 $, 마크 ( "끝") 다음에 범위를 파이프하는 명령 ( vim -이 경우 "-"는 stdin에서 입력을 읽으려면).


1
정말 고마워요!
Simon Pickup

5

그것은 정확히 말한 것을 의미합니다-(이 less) 에서 디스크에있는 파일 만 편집 할 수 있습니다 . 당신이 과정의 출력을 파이프 경우, 그가 STDOUT에가는 STDIN에 대한 less; 편집 할 파일이 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.