답변:
물론 더 이상 Ctrl+를 사용할 수 없습니다 R. Z Shell 매뉴얼을 참고 history-incremental-search-backward
하면 emacs
키맵에 위젯에 대한 키 바인딩 만 있다는 것을 알 수 있습니다 . vi 키맵에는 키 바인딩이 없습니다.
그러나 설명서를 읽으면 (18 장 참조), 키 바인딩을 추가하는 것은 bindkey
명령을 사용할 때 매우 간단한 연습입니다 .
bindkey "^R" history-incremental-search-backward
zle
표준 위젯이므로 명령 을 사용하여 위젯을 쉘 함수에 맵핑 할 필요도 없습니다 .
당신이 상담하는 경우 는 Z 쉘 위키에이 같은 질문에 대한 답변을 , 당신은 특히 VI "명령"과 "삽입 모드"키맵이를 추가하는 명령을 볼 수 있습니다 :
bindkey -M viins '^R' history-incremental-search-backward
bindkey -M vicmd '^R' history-incremental-search-backward
또한 garyjohn이 지적한 것처럼 vi "command"키맵에서 /캐릭터는 vi-history-search-backward
위젯에 바인딩됩니다 . 이 위젯과 위젯의 차이점은 히스토리 검색 모드 에history-incremental-search-backward
있는 위젯 동작입니다 . 다음은 몇 가지 차이점입니다.
history-incremental-search-backward
사이 를 전환 합니다. 즉에서 모드 누르는 것이 키 또는 + + 키 사이의 검색 모드 전환 및 키맵을. (호출 로부터 키맵하면 바인드 뭔가하지 않는 한에 따라서 번거로운 에서 뿐만 아니라 키맵.)main
vicmd
vi-cmd-mode
emacs
EscCtrlXCtrlVemacs
vicmd
history-incremental-search-backward
vicmd
vi-cmd-mode
vicmd
vi-history-search-backward
는 vi-cmd-mode
위젯을 처리하고 accept-line
검색을 종료 한 후 검색을 입력 한 명령 모드로 다시 들어갑니다. 즉, (기본 바인딩으로) /명령 모드에서 검색 모드로 들어가서 명령 모드 Esc로 돌아갑니다.history-incremental-search-backward
, 양쪽 history-incremental-search-backward
과 vi-rev-repeat-search
위젯이 인식됩니다. 즉 (위와 같이 바인딩을 변경했다고 가정) Ctrl+ R와 N이전의 일치하는 줄을 검색합니다.vi-history-search-backward
만 vi-rev-repeat-search
위젯은 인정된다. 즉 (위와 같이 바인딩을 변경했다고 가정) Ctrl+ R경고음이 발생하고 무시됩니다.bash의 vi 모드에서을 입력 <Esc>/<string><Enter>
하면 명령 기록을 검색합니다 <string>
. n
역사에서 다시 검색합니다. N
앞으로 검색합니다. zshell은 동일 할 수 있습니다.
garyjohn
Vim 방법을JdeBP
보여 주며 Ctrl + R의 키 바인딩을 얻는 방법을 보여줍니다! 두 가지 방법을 모두 사용하고 나중에 답변을 수락하겠습니다. 나는 1) 나에게 더 쉬운 방법과 2) 더 많은 공감을 얻는 방법에 따라 결정할 것이다. 둘 다 감사합니다!