터미널 에뮬레이터의 현재 줄 중심

터미널 에뮬레이터의 현재 줄 중심

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

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

답변1

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

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

이렇게 하면 선이 위쪽으로만 이동합니다. 마찬가지로 역색인을 사용하여 한 행 아래로 이동할 수 있습니다. 그건 그렇고, 이러한 작업은기준ECMA-48이지만 xterm과 유사합니다(DEC vt100 기반). ansi-term스크롤/인덱싱을 지원합니다.

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

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

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

추가 자료:

관련 정보