답변:
zle의history-search
기능을 사용할 수 있습니다 :
bindkey "^[[A" history-beginning-search-backward
bindkey "^[[B" history-beginning-search-forward
이것은 프롬프트에서 이미 입력 한 내용에 따라 히스토리 검색에 앞뒤로 바인드 Up되고 Down(자신의 이스케이프 시퀀스에 맞게 조정 됨).
따라서 "vim"을 입력 Up하고을 누르면 zsh는 "vim"으로 시작하는 명령에 대해서만 히스토리를 거꾸로 탐색합니다.
history-search-end 함수 (일반적으로 /usr/share/zsh/functions/Zle/
)를 사용하고 다음 -end
과 같이 각 행의 끝에 추가 하여 zsh의 히스토리에서 원하는 명령을 선택하면 커서를 행의 끝에 배치 할 수 있습니다 .
autoload -U history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^[[A" history-beginning-search-backward-end
bindkey "^[[B" history-beginning-search-forward-end
또 다른 유용한 옵션은 history | grep
별명 지정 (예 :
alias hg='history | grep'
입력 hg whatever
한 명령을 검색 할 수 있습니다 ( 예 :
$ hg chmod
1309 chmod +x rotate_files.sh
1385 chmod +x rotate_files_270.sh
1512 chmod +x testy.sh
1528 chmod +x act_on_2_numbers.sh
2142 chmod +x ~/bin/display_tmux_pane_pwd.sh
4532 chmod +x cat_files.rb
이 별칭을 내 도트 파일에 넣었습니다.
당신이 사용하는 경우 오 - 내 - zsh을을 추가 history-substring-search
받는 plugins=(...)
라인.
그런 다음 추가
bindkey "^[[A" history-substring-search-up
bindkey "^[[B" history-substring-search-down
어딘가에서 읽은 행 아래 source $ZSH/oh-my-zsh.sh
. 새 터미널을 저장하고 실행하거나 source ~/.zshrc
현재 터미널에서 실행 하십시오.
참고 : ^[[A
내가 사용하는 터미널 (키티) 및 기타 여러 곳에서 위쪽 화살표의 이스케이프 시퀀스입니다. 선택한 터미널을 체크인하려면 입력 showkey -a
한 다음 이스케이프 시퀀스를 찾을 키를 누릅니다.
brew install zsh-history-substring-search
위해 repo readme에 대한 지침을 확인한 다음 결과에 정말 만족하는 답변을 작성하겠습니다.
https://github.com/zsh-users/zsh-history-substring-search 에서 스크립트를 사용할 수 있습니다.
이전에 입력 한 명령의 일부를 입력하고 Up및 Down키를 눌러 일치하는 명령을 순환 할 수 있습니다.
내가보기 엔 사용하는 것이 좋습니다 것 "$terminfo[kcuu1]"
또는 "$key[Up]"
같은 하드 코딩 된 물건보다는 "^[[A"
어떤 또는 특정 시스템에서 작동하지 않을 수 있습니다.
/etc/zsh/zshrc
더 많은 키를 확인하십시오 . 내 시스템의 모습은 다음과 같습니다. 나는 terminfo
열쇠가 정의 될 가능성이 더 크다고 생각합니다 .
key=(
BackSpace "${terminfo[kbs]}"
Home "${terminfo[khome]}"
End "${terminfo[kend]}"
Insert "${terminfo[kich1]}"
Delete "${terminfo[kdch1]}"
Up "${terminfo[kcuu1]}"
Down "${terminfo[kcud1]}"
Left "${terminfo[kcub1]}"
Right "${terminfo[kcuf1]}"
PageUp "${terminfo[kpp]}"
PageDown "${terminfo[knp]}"
)
사용은 zsh-autosuggestions
어떻습니까?
문제는 입력 한 각 명령에 대해이 플러그인은 수락 할 수있는 제안을 보여줍니다. 사용 해보고 피드백을주세요.
플러그인이 없으면 Ctrlr입력을 시작하자마자 일치하는 명령이 제안으로 나타납니다.
"substring"검색이 더 유용하다는 cheflo에 동의합니다. 나는 거기에 댓글을 달 수 없으므로 새로운 답변을 시작했습니다. oh-my-zsh를 사용하고 ~ / .zshrc의 plugins = (...)에 "history-substring-search"를 추가합니다. 그런 다음 ~ / .zshrc를 소스하십시오. 더 추가 할 필요가 없습니다. "bindkey"를 사용하여 다음을 확인하십시오.
"^ [OA"기록 하위 문자열 검색 "^ [OB"기록-하위 문자열 검색
나중에 "to"와 위쪽 화살표를 입력하면 "history"가 나타나고 "to"가 강조 표시됩니다 (이전에 "history"명령을 사용한 경우).
oh-my-zsh를 사용하고 joelostblom, James의 하위 문자열 솔루션을 사용하므로 .zshrc를 다음과 같이 수정합니다. (13 행에서 "source $ ZSH / oh-my-zsh.sh" 그런 다음 주변 코드를 수정하십시오.)
plugins=(
git
history-substring-search
)
source $ZSH/oh-my-zsh.sh
bindkey -v
bindkey "^[[A" history-substring-search-up
bindkey "^[[B" history-substring-search-down
bindkey -v
ctrl-a, ctrl-e를 깰 것입니다. 모든 Ctrl 명령 일 가능성이 높습니다.
이것은 MacOS에서 위 / 아래 화살표를 통해 하위 문자열 히스토리를 쉽게 액세스 할 수있게 해주었습니다. 열쇠 바인딩은 당신에게 달려 있습니다.
하위 문자열 검색 기록은 문자열로 시작하는 명령에 액세스하는 것보다 낫습니다. 대부분의 경우 glob 또는 정규식 일치가없는 ctrl-r과 비슷합니다.
zsh-users / zsh-history-substring-search의 지시 사항에서 시작
brew install zsh-history-substring-search
# add the following to .zshrc
source /usr/local/share/zsh-history-substring-search/zsh-history-substring-search.zsh
bindkey '^[[A' history-substring-search-up
bindkey '^[[B' history-substring-search-down
이제 이것을 완전히 즐기십시오.