지도 문자 키

지도 문자 키

나는 bash의 제어 문자 사용을 정말로 이해하지 못합니다. 색상을 추가하기 위해 이스케이프 시퀀스를 사용하는 것과 같은 간단한 것은 이해하지만 키 바인딩과 같은 작업을 수행하는 방법은 이해하지 못합니다 .inputrc.

Shifta예를 들어, 이와 같은 것을 입력 하고 이를 어떻게 표현해야 하는지 확인할 수 있는 방법이 있습니까 .inputrc?

이 친구가 여기서 했던 것처럼: http://linuxart.com/log/archives/2005/10/13/super-useful-inputrc

답변1

참고로,다음은 archive.org OP의 질문에 있는 (죽은) 링크의 사본입니다.. 표시된 코드는 emacs lisp 스타일 코드입니다. 나는 그들에 대해 잘 모릅니다. 물론 고양이의 가죽을 벗기는 방법은 여러 가지가 있지만 아마도 가장 쉬운 방법은 다음과 같습니다.

먼저 를 showkey -a사용하여 키보드 시퀀스의 16진수 표현을 가져옵니다. 예를 들어 을 누르면 다음과 같은 결과 CtrlShift~가 나타납니다.

^^       30 0036 0x1e

따라서 내 16진수 표현은 입니다 0x1e. 그런 다음 내 항목에 한 줄을 추가할 수 있습니다 ~/.inputrc.

"\x1e": beginning-of-line

다음에 bash 쉘(또는 readline을 사용하는 프로그램)을 열 때, 입력하면 CtrlShift~커서가 줄의 시작 부분으로 이동합니다. 다음을 수행할 수도 있습니다.

"\x1b\x5a": "type this text whenever I press alt+shift+z"

답변2

OP의 질문에서 제기된 기본 질문은 readline(및 bash)의 제한 사항을 해결하는 방법입니다.

  • 기능 키 및 커서 키와 같은 특수 키는 종종 이스케이프 시퀀스를 보냅니다.
  • 이스케이프 시퀀스는 터미널과 초기화 방법에 따라 다를 수 있습니다.
  • 터미널 설명의 주요 차이점 중 하나는신청방법비교적일반 모드.
  • 응용 프로그램 모드에서는 커서 키가 전송될 수 있지만 \eOA(bash의 이름을 이스케이프 문자로 사용) 일반 모드에서는 전송됩니다 \e[A.
  • 전체 화면 응용 프로그램(터미널 데이터베이스 지원)은 일반적으로 응용 프로그램 모드를 사용하지만 Linux 콘솔에 제공되는 터미널 설명과 같은 예외가 있습니다.
  • 터미널 설명이 애플리케이션 모드를 사용하는 경우 터미널 설명에 정의된 키가 셸에 표시되는 값과 일치하지 않습니다(셸에 해당 기능이 켜져 있지 않기 때문입니다 smkx).

readline 정렬은 터미널 데이터베이스에 중점을 두지만(편집 중인 줄 주위로 커서를 이동할 수 있도록) 애플리케이션 모드와 일반 모드에 대한 키 바인딩 정보로 유용한 작업을 수행하기에는 충분하지 않습니다. readline을 사용하려면 사용하는 각 터미널과 일치하는 하드코딩된 이스케이프 시퀀스를 제공해야 합니다. 물론 여러 시퀀스를 동일한 함수에 매핑할 수 있습니다. 다행스럽게도 동일한 시퀀스가 ​​충돌하여 사용되는 경우는 거의 없습니다.

특수 키로 전송된 문자를 휴대용으로 찾으려면 cat -v명령을 입력하고 키를 눌러 결과를 확인하세요. ^[각 이스케이프 문자에 개별적 으로 해당됩니다. 다른 문자는 그대로 사용할 수 있습니다.

그런데,showkeyLinux에만 해당되며 다음에서만 사용할 수 있습니다.편안.

추가 자료:

관련 정보