ZSH에는 디렉토리 선택, kill(kill[tab][tab])을 사용하여 프로세스 선택 등을 위한 강력한 메뉴 선택 자동 완성 기능이 있습니다. 화살표를 사용하여 선택 사항을 탐색할 수 있습니다.
기록 검색(CTRL+R) 메뉴 팝업도 가능합니까? 메뉴를 통해 현재 CTRL+R 검색 표시줄과 일치하는 항목을 탐색할 수 있습니까?
답변1
나는 이것이 당신이 요구하는 것과는 거리가 멀다는 것을 알고 있지만 이것이 당신의 근본적인 문제를 해결할 수도 있습니다.
기록을 검색할 때 결과가 가득한 페이지를 표시하는 쉘 기록 확장이 있습니다. 또한 현재 디렉터리, Git 저장소, 종료 상태 및 호스트를 기반으로 관련 결과를 먼저 표시합니다.
여기에서 프로젝트를 설치할 수 있습니다.https://github.com/curusarn/resh
CTRL+ (역방향 검색 대체)를 사용하여 실행하세요 R.
검색 애플리케이션은 다음과 같습니다.
면책조항: 저는 프로젝트의 창시자이며 이는 뻔뻔한 자기 홍보입니다.
답변2
zsh-navigation-tools
이런 일을합니다. oh-my-zsh를 사용하는 경우 ctrl-R을 추가 zsh-navigation-tools
하면 plugins=(...)
위 .zshrc
/아래 및 검색/필터링이 포함된 스크롤 기록이 제공됩니다. oh-my-zsh 없이도 사용할 수 있지만 설정이 더 많은 작업처럼 보입니다.
답변3
내가 아는 한에서는 아니다.
아마도
predict-on
당신이 요청하는 것과 관련된 작업을 수행하려고 합니다 .autoload -U predict-on zle -N predict-on zle -N predict-off bindkey '^X1' predict-on bindkey '^X2' predict-off
답변4
그것은 가능합니다. 원칙적으로 _kill
역사 이벤트에도 작동하도록 완성 기능을 수정했습니다 .
다음은 예입니다. 항목을 선택한 후 [ENTER]를 한 번 눌러 이벤트 번호를 승인하고(명령줄에서는 fe 로 읽음 hc 780
) 다시 [ENTER]를 눌러 명령을 실행합니다. ( 실행하기 전에 명령줄을 수정하려는 경우 fc
대신 사용하십시오.)hc
$ hc Makefile[TAB]
history event
1906 9.3.2013 18:10 vi Makefile
1867 9.3.2013 17:26 less Makefile
780 3.2.2013 17:54 cat Makefile
776 3.2.2013 17:51 cat ../Makefile
이를 사용하려면 추가된 파일을 의 디렉터리에 넣고 다음 $fpath
줄을 다음 줄에 추가하세요 ~/.zshrc
.
zstyle ':completion:*:historyevent' command 'fc -dE -lr 1'
zstyle ':completion:*:historyevent' sort no
마지막으로 새 zsh
세션을 시작합니다.
조심하세요. 빠르고 더러운 해결책이지만 한동안은 잘 작동했습니다.
_역사이벤트
#autoload
local out histevent list expl match desc listargs all nm ret=1
_tags historyevent || return 1
all=(-U)
match="*[[:blank:]]*[[/[:blank:]]$PREFIX*$SUFFIX*"
nm="$compstate[nmatches]"
out=( "${(@f)$(_call_program historyevent fc -l 2>/dev/null)}" )
desc="$out[1]"
out=( "${(@M)out[2,-1]:#${~match}}" )
histevent=( "${(@)${(@M)out##[^0-9]#[0-9]#}##*[[:blank:]]}" )
if zstyle -T ":completion:${curcontext}:historyevent" verbose; then
list=( "${(@Mr:COLUMNS-1:)out}" )
desc=(-ld list)
else
desc=()
fi
_wanted processes expl 'history event' \
compadd "$@" "$desc[@]" "$all[@]" -a - histevent && ret=0
if [[ -n "$all" ]]; then
zstyle -s ":completion:${curcontext}:historyevent" insert-ids out || out=menu
case "$out" in
menu) compstate[insert]=menu ;;
single) [[ $compstate[nmatches] -ne nm+1 ]] && compstate[insert]= ;;
*) [[ ${#:-$PREFIX$SUFFIX} -gt ${#compstate[unambiguous]} ]] &&
compstate[insert]=menu ;;
esac
fi
return ret
_fc
#compdef fc
local curcontext="$curcontext" line state ret=1
_arguments -C \
'-e[editor command]' \
'-l[list last history events]' \
'-n[suppress numbers]' \
'-r[reverse order]' \
'*:history event:->historyevent' && ret=0
if [[ -n "$state" ]]; then
_alternative \
'historyevent:: _historyevent' && ret=0
fi
return ret