reverse-i-search 명령(ctrl+r)을 사용하여 검색 기록을 앞으로 전달하는 방법은 무엇입니까?

reverse-i-search 명령(ctrl+r)을 사용하여 검색 기록을 앞으로 전달하는 방법은 무엇입니까?

Readline 매뉴얼에서

# man readline

다음은 뒤로 검색하는 방법과 앞으로 검색하는 방법에 대해 설명합니다.

reverse-search-history (C-r)
Search backward starting at the current line and moving `up' through the history as necessary.  This is an incremental search.

forward-search-history (C-s)
Search forward starting at the current line and moving `down' through the  history  as  necessary.   This  is  an  incremental search.

ctrl+r을 누르고 "apt-get"을 입력하면 계속해서 ctrl+r을 눌러 역검색 기록을 수행할 수 있습니다. 그런데 Ctrl+s를 탭하면 터미널이 앞으로 이동하지 않습니다. 내가 뭔가 잘못하고 있는 걸까요?

또한 메타 접두사 "M-"은 어떤 키를 나타냅니까?

답변1

시퀀스는 C-s터미널 드라이버에서 가져옵니다.

stty -a | grep '\^S'

readline에서 사용하기 위해 시퀀스를 해제하려면 다음과 같이 정지 터미널 시퀀스를 다른 시퀀스로 설정하십시오.

stty stop ^J

또는 다음과 같이 완전히 제거하십시오.

stty stop undef

그 후에는 C-s주어진 터미널에서 작동합니다.

~/.bashrc모든 터미널에서 작동하도록 설정하십시오 .

시퀀스 는 이미 언급한 대로 키를 M-의미합니다 Alt.

답변2

위에서 제안한 대로 다른 TTY '중지' 문자를 할당하는 것 외에도 사용할 계획이 없다면 다음과 같이 완전히 제거할 수 있습니다.

$ stty stop undef

그런 다음 readline은 정방향 검색을 위해 control-s를 사용할 수 있으며 새로운 중지 문자가 추가되어도 이상한 동작이 발생하지 않습니다.

답변3

전방 검색 기록(Cs)은 작동하지 않습니다(맨 페이지에 있지만).

'M-'은 Alt 키 수정자를 나타냅니다.

답변4

다음을 사용하지 마십시오:

stty stop ^J

하지만

stty stop ^P

^J또는 ssh에 큰 문제를 일으키는 다른 것 . (왜인지는 모르겠습니다.) 로그인 후 Enter백슬래시가 작동하지 않았습니다. 아니면 다음을 입력해야 했습니다:

stty sane 
export TERM=linux

내가 타이핑하기 전에

ssh root@192...

그래서

stty stop ^P

두 가지 문제를 동시에 해결했습니다.

관련 정보