less로 파이프하고 편집: "표준 입력을 편집할 수 없습니다" 오류. 해결책?

less로 파이프하고 편집: "표준 입력을 편집할 수 없습니다" 오류. 해결책?

나는 최근에 내 파일에 페이지 매김을 사용하면 Emacs에서 버퍼를 누르고 열 less수 있다는 것을 배웠습니다. 이것은 환경 변수를 올바르게 설정하는 v한 작동합니다. 제 경우에는 다음과 같이 설정했습니다.$EDITOR

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

위의 내용을 통해 실행 중인 터미널에 emacs를 로드할 수 있습니다 less.

그러나 위의 트릭은 다음 상황에서는 작동하지 않습니다.관로이 작업 less을 수행하면 less다음 메시지가 표시됩니다.

Cannot edit standard input (press RETURN)

내 질문은, 왜 이런 일이 발생하는가입니다. 하지만 가장 중요한 것은,해결책이 있나요??

답변1

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

g|$vim -

g파일/입력의 첫 번째 라인으로 점프하고, 마커("end")인 |"파이프" 작업이 호출되고 , 범위를 다음으로 파이프하는 명령이 뒤따릅니다( 이 경우 "-"는 의미함). stdin에서 입력을 받아 읽습니다).$vim -

답변2

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

해결책은 매우 분명합니다.내부적으로 스트림을 파일에 저장 less하고 저장된 파일 열기. 시청 중에 이 작업을 수행하려면s그리고 파일 이름을 알려주세요. 그런 다음 less파일을 종료 하고 수동으로 열거나 계속해서 내부에서 less입력합니다 .:e방금 저장한 파일 이름을 입력하세요.

답변3

이 방법 은 디스크에 있는 파일만 편집할 수 있다는 의미입니다 less. 프로세스의 출력을 파이프하면 for STDOUT로 이동하며 편집할 파일이 없습니다.STDINless

관련 정보