.inputrc의 특정 명령에 Alt 백스페이스를 매핑하는 방법은 무엇입니까?

.inputrc의 특정 명령에 Alt 백스페이스를 매핑하는 방법은 무엇입니까?

inputrc에서 Alt에 키 조합을 바인딩하는 방법을 아는 사람이 있습니까?

Alt+ 키 조합을 Backspace에 매핑하고 싶지만 + 및 +를 backward-kill-word눌러 어떤 문자를 나타내는지 확인 하면 잠시 동안 표시되다가 삭제되거나 아무 것도 표시되지 않습니다.CtrlVAltBackspace^[

Ctrl+를 무언가에 바인딩 하려면 +를 Left Arrow누르고 다음 을 입력한 다음 다음으로 바꾸고 마지막 으로 다음 줄을 추가합니다 .CtrlV^[[1;5C^[\e.inputrc

"\e[1;5C": forward-word

하지만 이 방법은 나에게는 효과가 없습니다 Alt+ (literally anything).

답변1

일반적으로 단일 문자를 전송하는 키의 경우 Alt+키는 일반적으로 이스케이프 문자와 해당 문자를 전송합니다. 특히 Alt+는 이스케이프 문자(시각적으로 -로 표시됨 )와 백스페이스 문자(시각적으로 - -로 표시됨 )인 위치를 Backspace보냅니다 . 보다 정확하게는 삭제 문자이지만 이 답변에서는 "백스페이스"라는 이름을 사용하겠습니다. . (구성에 따라 백스페이스 문자가 시각적으로 로 표시 될 수 있습니다 .)\e\177\e^[\177^?\b^H

Ctrl+ 를 V Alt누르면 Ctrl Backspace+V 문자는 터미널(또는 터미널 모드에 따라 응용 프로그램)에 다음 문자를 문자 그대로 해석하도록 지시하므로 시각적으로 로 표시되는 이스케이프 문자가 삽입됩니다 ^[. 그런 다음 터미널에는 읽을 문자가 하나 더 있는데, 이는 방금 입력한 이스케이프 문자를 제거하는 백스페이스 키입니다.

키 입력으로 전송된 전체 문자열을 보려면 다음 명령을 사용하고 2초 내에 키 입력을 입력하면 됩니다.

stty raw; sleep 2; echo; stty cooked

stty raw제어 문자가 있는 그대로 삽입되는 원시 모드로 터미널을 전환한 다음 stty cooked다시 전환합니다. 실제로 Alt+는 Backspace이것이 필요한 극소수의 경우 중 하나입니다. 대부분의 키 코드는 단일 제어 문자 또는 이스케이프 문자만 보내고 그 뒤에 인쇄 가능한 문자가 옵니다.

.inputrc두 가지 일반적인 경우(삭제 또는 백스페이스 문자 사용)는 ,에서 다룹니다 .

"\e\177": backward-kill-word
"\e\b": backward-kill-word

이스케이프 시퀀스는 터미널에 따라 다릅니다. 일부 터미널은 특정 키와 코드에 대한 이스케이프 시퀀스를 보내지 않거나 여러 키와 코드에 대해 동일할 수 있는 비표준 이스케이프 시퀀스를 보내지 않습니다. 그러나 ++ 를 ^[누를 때 잠깐 표시된다면 이는 터미널이 해당 특정 키와 코드에 대한 표준 작업을 수행하고 있음을 의미합니다.CtrlV AltBackspace

관련 정보