unindent 함수에 대한 단축키를 바인딩하려고 했는데 CTRL-[nanorc 에 bind ^[ unindent main
( )를 입력하면 CTRL-[텍스트가 여전히 일반적인 녹색이 아닌 빨간색으로 포맷되어 바인딩이 작동함을 알려주는 것 같습니다. bind M-[ unindent main
( ) 로 변경해 보았지만 ALT-[여전히 작동하지 않습니다. 이상하게도 둘 다 CTRL-]작동합니다 ALT-]. 이 문제를 해결할 방법이 있나요?
답변1
당신은 할 수 없습니다.
터미널은 키 입력이 아닌 문자를 보냅니다. (바라보다키보드 입력과 텍스트 출력은 어떻게 작동합니까?자세한 내용을 알아보세요. ) 그러나 모든 키에 해당 문자가 있는 것은 아닙니다. 해당 문자가 없는 키나 키 코드를 누르면 터미널은 해당 문자를 나타내는 문자 시퀀스를 보내거나 경우에 따라 인쇄할 수 없는 문자 시퀀스를 보냅니다.제어 문자). 이러한 시퀀스는 항상 다음과 같은 특정 문자로 시작됩니다.탈출하다특징. 이 문자는 Ctrl+ [와 함께 전송 됩니다.
^[
따라서 바인딩 ( Ctrl+ ) 이 가능하면 [이스케이프 시퀀스를 보내는 모든 키가 삭제됩니다. 예를 들어, 터미널에 따라 Up세 문자( ^[
, [
, A
) 또는 세 문자( ^[
, O
, )를 보냅니다. A
다시 바인딩할 수 있는 경우 ^[
키 Up가 수행하는 작업을 수행 ^[
한 다음 [
및 를 삽입합니다 A
.
Alt+ char이스케이프 문자를 보낸 다음성격. 따라서 를 바운스하면 M-[
실제로 두 개의 문자 시퀀스( ^[
, [
)가 다시 바인딩되어 일부 커서 및 기능 키가 손상됩니다.
Nano는 기술적으로 리바인딩(버전 2.5.3 기준)을 허용 ^[
하지만 읽을 때 ^[
이스케이프 시퀀스의 시작으로 분류하고(약간 단순화했습니다) Not looking for Bindings로 시작하기 때문에 아무런 효과가 없습니다 ^[
. Nano는 명시적으로 리바인딩을 금지합니다 M-[
.
이 문제를 해결하는 방법이 있습니다일부단말기, 그러나 소수의 편집자만이 이를 활용합니다. Nano는 주로 터미널이 존재하는 곳을 사용하지 않고 이 기능을 지원하지 않는 사용자를 대상으로 하는 비교적 간단한 편집기입니다.