Tab을 눌러 완료하면 "해당 위젯 없음"으로 인해 키 바인딩, 기능/옵션 또는 완료가 명확하지 않습니다.

Tab을 눌러 완료하면 "해당 위젯 없음"으로 인해 키 바인딩, 기능/옵션 또는 완료가 명확하지 않습니다.

내가 설치한 것 zplug:

zplug "junegunn/fzf-bin", from:gh-r, as:command, rename-to:fzf, use:"*${(L)$(uname -s)}*amd64*"
zplug "junegunn/fzf", use:"shell/*.zsh", defer:2
zplug "peco/peco", as:command,     from:gh-r, use:"*${(L)$(uname -s)}*amd64*"

zplug "lincheney/fzf-tab-completion", use:"zsh/fzf-zsh-completion.sh"

나는 이미 zsl-autosuggestions그것 을 설치 했다는 점에 유의 하십시오 zsh-completions.

옵션/기능 - 다음 중 어떤 결과가 나오는지 설명하려고 합니다 No such widget.

autoload -Uz async && async             
autoload -Uz add-zsh-hook               
autoload -Uz compinit && compinit       
autoload -Uz url-quote-magic            
autoload -Uz vcs_info                   
setopt autocd                           
setopt append_history                   
setopt auto_list                        
setopt auto_menu                        
setopt auto_pushd                       
setopt extended_history                 
setopt hist_expire_dups_first           
setopt hist_find_no_dups                
setopt hist_ignore_dups                 
setopt hist_ignore_all_dups             
setopt hist_reduce_blanks               
setopt hist_save_no_dups                
setopt hist_ignore_space                
setopt inc_append_history               
setopt interactive_comments                               
setopt magic_equal_subst                                      
setopt print_eight_bit                  
setopt print_exit_value                 
setopt prompt_subst                     
setopt pushd_ignore_dups                
setopt share_history                    
setopt transient_rprompt

watch=(notme) 
LOGCHECK=60
REPORTTIME=5

키 바인딩 – bindkey '^I' fzf_completions입니다 No such widget. 하지만 주석을 달고 를 누르면 Tab여전히 가 표시됩니다 No such widget `1'.

bindkey  "^[[H"   beginning-of-line
bindkey  "^[[F"   end-of-line
bindkey  '^I'     fzf_completions

KEYTIMEOUT=1
WORDCHARS='*?_-[]~=./&;!#$%^(){}<>'

조사하다:

if zplug check "junegunn/fzf-bin"; then
    export FZF_DEFAULT_OPTS="--height 40% --reverse --border --inline-info --color=dark,bg+:235,hl+:10,pointer:5"
fi

if zplug check "zsh-users/zsh-autosuggestions"; then
    ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#ACB31D,bg=#0087AF,bold,underline"
fi

if zplug check "junegunn/fzf-bin"; then
    alias base="base64"
    alias decode="decode64"
    alias encode="encode64"
fi

완료 - 해결을 위해 각 문제에 대해 설명을 달았지만 문제가 명확하지 않습니다.

zstyle ':completion::complete:*' gain-privileges 1
zstyle ':completion:*:descriptions' format '%B%d%b'
zstyle ':completion:*:descriptions' format '%U%F{yellow}%d%f%u'
zstyle ':completion:*:messages' format '%d'
zstyle ':completion:*:warnings' format 'No matches for: %d'
zstyle ':completion:*' completer _expand _complete _ignored _approximate
zstyle ':completion:*' group-name ''
zstyle ':completion:*' menu select=2
zstyle ':completion:*' rehash true
zstyle ':completion:*' select-prompt '%SScrolling active: current selection at %p%s'
zstyle ':completion:*' verbose yes
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*'
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"

원인의 근원은 불분명합니다. 무엇이 원인인지 모르겠습니다.

답변1

No such widget이 버튼을 누르면 실제로 존재하지 않는 위젯에 바인딩된 선언이 Tab있다는 의미입니다.bindkeyTab또는바인딩하려는 위젯이 Tab존재하지 않는 다른 위젯을 호출하려고 합니다.


키 에 Tab무엇이 연결되어 있는지 확인하려면 다음 단계를 따르세요.

bindkey '^I'

이것은 다음과 같이 출력됩니다

"^I" fzf-completion

이 위젯이 존재하는지 확인하려면:

  1. ~/.zshrc귀하의 파일 에서장애를 입히다 zsh-autosuggestions.
  2. 터미널을 다시 시작하십시오.
  3. 그럼 해
    zle -lL fzf-completion
    

위젯이 그렇다면아니요존재하는 경우 위 명령은 아무것도 출력하지 않습니다. 이 경우 문제를 발견했습니다. 그런 다음 Tab키를 위젯에 바인딩 하여 문제를 해결할 수 있습니다.하다존재하다.


위 명령이 ``sh zle -N fzf-completion `` 또는 ``sh zle -Ccomplete-word .complete-word _main_complete ````와 같은 결과를 출력한다면 위젯이 존재하는 것입니다. 이 경우 출력에 있는 단어의 _마지막_은 위젯을 구현하는 함수의 이름을 알려줍니다.

그런 다음 다음을 수행하여 함수의 출처를 확인할 수 있습니다.

type fzf-completion

이것은 다음과 같이 출력됩니다

fzf-completion is a shell function from /path/to/fzf/completion/completion

그런 다음 파일을 열어 코드를 검사할 수 있습니다. 또는 원하는 경우 다음과 같이 함수에 대한 추적을 켤 수 있습니다.

functions -t fzf-completion

두 경우 모두 유사한 진술을 찾아보십시오 zle widget-name. 그런 다음 다음과 같은지 확인해 볼 수 있습니다.저것위젯은 위에서 설명한 방식으로 존재합니다.


이렇게 하면 문제의 정확한 위치를 찾아 해결할 수 있습니다.

관련 정보