ed에서 뒤로 스크롤하는 방법

ed에서 뒤로 스크롤하는 방법

BSD ed 및 GNU ed에는 z스크롤 명령이 있습니다. 그러나 z명령을 반복적으로 사용하면 앞으로만 스크롤되는 것 같습니다. z앞으로 스크롤하는 대신 뒤로 스크롤하는 것과 비슷한 것이 있습니까 ?

답변1

z질문에서 "스크롤"은 "터미널 버퍼에 다음 몇 줄 표시"를 의미하며 이것이 비표준 명령이 수행하는 작업이라고 가정합니다 . 다른 줄로 이동하는 것은 줄 번호, 정규식 또는 상대 주소(앞의 4번 줄과 같은)로 -4줄의 주소를 지정하여 수행되지만 이것이 이 질문의 목적은 아닌 것 같습니다.

z앞으로 스크롤하는 것과 같은 간결한 방식으로 뒤로 직접 스크롤 할 수는 없지만 (예: 로 시작 .z하여 z버퍼의 다음 몇 줄을 반복적으로 표시) 상대 주소 지정을 사용하여 스크롤 창 크기의 두 배로 뒤로 이동할 수 있습니다. 그 지점에서 앞으로 스크롤하세요.

25줄 스크롤 창을 사용하고 문서를 끝에서 뒤로 스크롤한다고 가정해 보겠습니다.

$z25
-50z
-50z

(잠깐만, 번호가 매겨진 행을 얻으 zn려면 대신 사용하십시오 z.)

마지막 줄을 먼저 표시합니다 $z25(이렇게 하면 후속 명령에 대한 롤링 창도 z25줄로 설정됩니다). 그런 다음 모든 사람은 -50z50줄을 다시 버퍼로 이동하고 거기에서 시작하는 25줄을 표시합니다.

문제는 일반적으로 기본 스크롤 창 크기(기본적으로 터미널의 줄 수)를 모르기 때문에 위와 같이 명시적인 스크롤 줄 수를 제공해야 한다는 것입니다.

-50z다음(이전) 행 세트를 보기 위해 입력하는 것도 다소 번거롭지만, 를 사용하여 이전 명령을 호출 할 수 있는 with 를 ed사용하면 아마도 큰 문제가 되지 않을 것입니다 .rlwrapUp-arrow

또 다른 문제는 편집 버퍼의 시작 부분에 버퍼의 시작 부분을 넘어서 상대 주소를 입력하면 오류가 발생한다는 것입니다.


이 명령은 터미널 창에서 사용할 수 있는 줄 수에서 1을 뺀 값으로 자동으로 대체된다는 점을 제외하면 z와 유사합니다 (명시적인 숫자가 제공되지 않는 한 ). 따라서 위에 표시된 명령은 다음과 같이 다시 작성할 수 있습니다..,+24p24z25-50z

-50;.,+24p

이는 "버퍼에서 50줄 뒤로 이동한 다음 현재 줄과 다음 24줄을 인쇄합니다"를 의미합니다. ( 번호가 매겨진 행을 얻으 n려면 대신 사용하십시오 p.)

관련 정보