터미널 에뮬레이터의 현재 라인 중앙에 위치

터미널 에뮬레이터의 현재 라인 중앙에 위치

내가 정말 좋아하는 emacs 버퍼(심지어 ansi-term, shell및 )의 기능 중 하나 는 화면의 위쪽 절반에 여전히 이전 출력의 일부가 포함되도록 터미널의 현재 줄을 "중앙에" 배치하는 eshell기능입니다 .C-l

C-l표준(표준 이름이 무엇인지 확실하지 않음) 터미널이 눌려지면 현재 행을 창 상단으로 이동시키는 것 같습니다 . 현재 줄을 화면 중앙으로 이동하는 일반적인 방법이 있습니까? 그렇지 않은 경우 iterm2, 터미널 또는 OS X로 포팅된 일부 터미널 에뮬레이터에 대해 특별히 이 작업을 수행할 수 있는 방법이 있습니까?

답변1

대부분의 터미널 에뮬레이터는 이 작업을 "수행"할 수 있지만 약간의 작업이 필요합니다.

  • 이동하려는 선이 화면 하단에 있다고 가정합니다.
  • 해당 줄을 위로 이동하려면 맨 아래 행에 이스케이프 시퀀스를 보내고 (계산!) 스크롤하려는 줄 수만큼 줄을 위로 이동하여 줄을 스크롤(또는 "인덱스")합니다.
  • 스크롤하면 화면의 모든 줄이 이동됩니다. 스크롤 영역을 설정하여 이동되는 줄 수를 제한할 수 있습니다. 그렇게 하면 화면 상단의 선이 사라지는 것을 방지할 수 있습니다. 그러나 라인의 원래 위치와 목표 사이의 라인은 사라질 것입니다.

그것은 단지 라인을 위로 이동시킵니다. 마찬가지로 "역방향 인덱싱"을 사용하여 한 줄을 아래로 이동할 수 있습니다. 그런데 이러한 작업은기준ECMA-48이지만 xterm과 같은 것입니다(DEC vt100 기반). ansi-term스크롤/인덱싱을 지원합니다.

마지막으로, 그것은 단지 위 또는 아래입니다. 줄을 왼쪽/오른쪽으로 이동하려면 커서가 줄의 시작 부분에 있는 동안 문자를 삽입하거나 삭제하기 위한 이스케이프 시퀀스를 보냅니다.

이러한 이스케이프 시퀀스는 terminfo(5)매뉴얼 페이지에 문서화되어 있습니다. 나는 다음과 같이 언급했습니다.

csr(스크롤 영역 설정)
ind(색인)
rin(역방향 색인)
cup(커서 위치)
ich(문자 삽입)
dch(문자 삭제)

추가 자료:

관련 정보