![Esc-[가 `less`에서 왼쪽으로 스크롤되지 않는 이유는 무엇입니까?](https://rvso.com/image/164695/Esc-%5B%EA%B0%80%20%60less%60%EC%97%90%EC%84%9C%20%EC%99%BC%EC%AA%BD%EC%9C%BC%EB%A1%9C%20%EC%8A%A4%ED%81%AC%EB%A1%A4%EB%90%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
에 따르면맨페이지의 경우 lesskey
다음 키가 왼쪽 스크롤 및 오른쪽 스크롤에 바인딩되어 있습니다.
\e[ left-scroll
\e] right-scroll
\e( left-scroll
\e) right-scroll
\kl left-scroll
\kr right-scroll
화살표 키와 Esc-(
/는 오른쪽 스크롤과 Esc -)
마찬가지로 잘 작동 하지만 왼쪽 스크롤에서는 작동하지 않습니다. 대신 명령줄 프롬프트에 다음이 표시됩니다.Esc-]
Esc-[
ESC[
~/.lesskey
해결 방법으로 함수 에 다음 줄을 추가합니다 .
\e[ left-scroll
그런데 왜 기본적으로 작동하지 않습니까?
저는 Debian Stretch의 XFCE4와 Kubuntu 18.04 및 다양한 터미널 에뮬레이터에서 이 동작을 관찰했습니다.
$ less --version
less 487 (GNU regular expressions)
Copyright (C) 1984-2016 Mark Nudelman
less comes with NO WARRANTY, to the extent permitted by law.
For information about the terms of redistribution,
see the file named README in the less distribution.
Homepage: http://www.greenwoodsoftware.com/less
버그 보고서를 제출하는 것을 고려했지만알려진 버그 및 기능 요청 목록 이는 알려진 동작임을 나타냅니다.
개선 요청
[ . . . ]
참조번호: 175
버전 구현: 322
ESC-[에 대한 대체 명령을 추가합니다.
이것이 실제로 의 제한 사항입니까 less
, 아니면 터미널이 Escape 키를 처리하는 방식에 문제가 있습니까?
답변1
이는 또는 또는 ESC [
와 같은 일부 터미널의 여러 기능 키에 의해 전송된 문자 시퀀스의 시작이기도 하기 때문입니다 . 또한 .HomeEndPageUpless
따라서 less
을 수신 하면 ESC [
더 많은 것을 기다립니다(다른 응용 프로그램처럼 시간 초과 없이).
내 터미널 ESC[6~
에는 PageDown. 을 누르면 당신처럼 Alt+[보입니다 . ESC [
하지만 입력하면 6
아래 ~
로 스크롤됩니다.
terminfo 페이지 에 또는 ... 에 대한 항목이 없는 TERM=vt100 less
대신 실행하면 작동하는 것을 볼 수 있습니다 .less
vt100
HomeEndESC [
그러나 \e[ left-scroll
에 추가 ~/.lesskey
하고 lesskey
로 컴파일 ~/.less
하면 ESC [
작업이 왼쪽으로 스크롤되지만 모든 Home, PageUP...이 작동을 중지하고 모두 왼쪽으로 스크롤하고 보내는 추가 문자로 인해 경고음이 발생하는 것을 볼 수 있습니다.
코드를 보면 명령 테이블이 처리되는 순서에 관한 것입니다. 명령 ~/.less
테이블은마지막에 추가됨, 하지만머리에 삽입이므로 해당 항목이 처리됩니다.~ 전에내장된 것.
ESC [
입력 시 에 대한 항목이 먼저 발견되면 처리 \e[ left-scroll
되고, 에 대한 항목 \kD forw-screen
(많은 터미널에서 로 번역됨 \e[6~ forw-screen
)이 먼저 발견되면 처리됩니다.그것은 단지접두사성냥, 그리고less
더 많은 입력을 기다립니다.
그래서 그것은 일종의 버그입니다. 해결 방법은 시간 초과를 추가하는 것입니다. 그러나 짧은 시간 초과를 추가한다는 것은 다중 키 명령을 포기하는 것을 의미합니다. 사용자가 다중 키 명령을 입력할 수 있는 충분한 시간을 제공하기 위해 시간 초과를 길게 설정하면 ESC [
응답이 너무 느려질 수 있습니다.
이제 등이 있는 터미널에는 PageUp일반적으로 , 에도 바인딩된 키도 Left있으므로 스크롤 대신 이를 사용할 수 있습니다.Rightleft-scroll
right-scroll