Esc-[가 `less`에서 왼쪽으로 스크롤되지 않는 이유는 무엇입니까?

Esc-[가 `less`에서 왼쪽으로 스크롤되지 않는 이유는 무엇입니까?

~에 따르면맨페이지의 경우 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 및 Kubuntu 18.04의 XFCE4와 다양한 터미널 에뮬레이터에서 이 동작을 관찰했습니다.

$ 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~스크롤됩니다.

TERM=vt100 less대신 terminfo 페이지 less에 또는 항목이 vt100없는 를 실행하면 작동하는 것을 볼 수 있습니다 .HomeEndESC [

그러나 \e[ left-scroll에 추가 ~/.lesskey하고 로 lesskey컴파일을 실행하면 왼쪽으로 스크롤이 작동하지만 모두 , ... 작동이 중지되고 모두 왼쪽으로 스크롤되며 보내는 추가 문자로 인해 경고음이 발생하는 것을 ~/.less알 수 있습니다 .ESC [HomePageUP

코드를 보면 명령 테이블이 처리되는 순서에 관한 것입니다. 명령 ~/.less목록은 다음과 같습니다.마지막으로 추가됨, 하지만머리를 삽입이므로 해당 항목이 처리됩니다.앞으로내장.

입력 시 ESC [항목이 먼저 발견되면 처리되고, 항목이 먼저 발견되면 처리됩니다(많은 터미널에서 이는 다음과 같이 변환됩니다).\e[ left-scroll\kD forw-screen\e[6~ forw-screen이건 그냥접두사성냥, 그리고less추가 입력을 기다리는 중.

그래서 이것은 실수입니다. 해결책은 시간 초과를 추가하는 것입니다. 그러나 더 짧은 시간 초과를 추가한다는 것은 다중 키 명령을 포기한다는 의미입니다. 사용자가 다중 키 명령을 입력할 수 있는 충분한 시간을 제공하는 긴 시간 초과는 ESC [응답이 너무 느려질 수 있습니다.

이제 PageUp등이 있는 터미널에는 일반적으로 에도 바인딩된 Left및 키도 있으므로 스크롤에 사용할 수 있습니다 .Rightleft-scrollright-scroll

관련 정보