Bash에서 역방향 검색 기록을 리바인드합니다.

Bash에서 역방향 검색 기록을 리바인드합니다.

reverse-search-history기본적으로 Cr에 바인딩됩니다. Cr을 입력하여 검색을 시작한 다음 Cr을 다시 입력하여 이전 일치 항목으로 이동할 수 있습니다.

나는 reverse-search-history\er(Alt-r)로 묶였습니다. 이 새로운 바인딩은 초기 검색에 작동하지만 Alt-r을 눌러도 검색이 계속되지 않습니다. Cr은 여전히 ​​역방향 검색을 반복해야 할 것 같습니다.

Alt-r을 반복 기능에도 사용할 수 있는 방법이 있습니까? 아니면 "계속 검색" 기능을 기본 키가 아닌 다른 키에 바인딩하는 방법이 있나요? emacs에서는 이 작업을 수행할 수 있지만 bash/readline에 대한 관련 문서를 찾을 수 없습니다.

답변1

몇 가지 테스트를 거친 후 다음과 같은 답변을 얻었습니다.

존재하다리눅스 가상 콘솔, "Alt-R"은 showkey -a"Esc"와 "r"인 "^[r"을 생성하고 Escape는 검색 문자열을 삭제하여 역방향 검색을 중지합니다.

존재하다xterm\M-r, "ò"로 표시됨 :

]# bind -p |grep ' reverse-se'
"\C-r": reverse-search-history
"\e[172": reverse-search-history
"\e[1;3A": reverse-search-history
"ò": reverse-search-history

설명하신 대로 "\e..."는 부분적으로만 작동합니다(수정된 위쪽 화살표임).


man bash실제로 몇 가지 정보가 있습니다.

   convert-meta (On)
          If set to On, readline will convert characters with the eighth bit set to an
          ASCII key sequence by stripping the eighth bit and prefixing an escape char-
          acter (in effect, using escape as the meta prefix).  The default is On,  but
          readline will set it to Off if the locale contains eight-bit characters.

다음은 readline 변수입니다:

isearch-terminators
    ... If this variable has not been given a value,
    the characters ESC and C-J will terminate an incremental search.

관련 정보