zsh: ^R을 누르면 검색 입력을 기존 줄 내용으로 채우시겠습니까?

zsh: ^R을 누르면 검색 입력을 기존 줄 내용으로 채우시겠습니까?

.zshrc 구성이 주어지면:

bindkey -v
bindkey "^R" history-incremental-pattern-search-backward

빈 프롬프트에 입력 하면 foo<^R>bar가장 최근에 일치하는 명령을 검색합니다 bar.

^R이 기존 프롬프트 입력을 사용하도록 하려면 어떻게 해야 합니까? 즉, 일치시키려는 키의 순서입니다 foobar.

답변1

^R에 바인딩하면 history-beginning-search-backward가까워지지만 패턴 검색은 아닙니다.

^R행의 현재 내용을 초기 검색 패턴으로 추가하는 함수에 바인딩할 수 있습니다 .

history-incremental-pattern-search-backward-from-line () {
  zle history-incremental-pattern-search-backward $BUFFER
}
zle -N history-incremental-pattern-search-backward-from-line
bindkey -M viins "^R" history-incremental-pattern-search-backward-from-line
bindkey -M vicmd "^R" history-incremental-pattern-search-backward-from-line
bindkey -M isearch "^R" history-incremental-pattern-search-backward

isearch( 맵 에 바인딩해야 합니다 . 그렇지 않으면 ^R현재 검색을 반복하지 않고 지금까지 찾은 행을 기반으로 반복 검색이 수행됩니다.)

관련 정보