이게 효과가 있어
일반적으로 zsh
탭 완성은 잘 작동합니다.
$ touch foo-1-bar foo-2-bar
$ touch f<Tab>
$ touch foo--bar
^ cursor here
다시 누르면 Tab파일을 선택할 수 있는 메뉴가 나타납니다.
$ touch foo--bar
foo-1-bar foo-2-bar
이것은 아니다
그러나 이것은 시작과 끝이 일치하는 문자열에는 작동하지 않는 것 같습니다. 예를 들어:
touch foo-bar foo-foo-bar
touch f<Tab>
touch foo-bar
^ cursor here. <tab> again.
touch foo-bar
^ cursor here.
메뉴가 표시되지 않으며 선택할 기회도 없습니다 foo-foo-bar
. 이는 예상된 동작입니까, 아니면 버그입니까? 후자의 경우에도 메뉴가 나타나도록 하는 설정이 있나요?
나는 그것을 사용하고 있습니다 oh-my-zsh
. 완료 관련 줄을 모두 제거하려고 시도했지만 ~/.zshrc
아무런 차이가 없었습니다.
답변1
의견을 토대로 비활성화를 시도했는데 oh-my-zsh
문제가 해결되었습니다. 그런 다음 oh-my-zsh
소스 코드를 탐색 하고 선택적으로 모듈을 비활성화했습니다.
나는 이전에 이것을 가지고 있었지만 CASE_SENSITIVE="true"
이 줄을 주석 처리하면 문제가 해결되었습니다. 분명히 이것은알려진 오류.
~/.zshrc
이 문제를 해결하려면 source 뒤에 다음 줄을 추가하면 됩니다 oh-my-zsh
.
zstyle ':completion:*' matcher-list 'r:|=*' 'l:|=* r:|=*'
답변2
개인적으로 나는 이 솔루션을 선호합니다.http://zsh.sourceforge.net/FAQ/zshfaq04.html#l50, 이는 tcsh의 완성과 유사하게 작동하며 커서 앞의 단어만 완성합니다.
그냥 사용
bindkey '\CI' expand-or-complete-prefix
바꾸다
bindkey '\CI' expand-or-complete
(기본적으로).
답변3
또 다른 옵션은 한 페이지에 언급된 대로 COMPLETE_IN_WORD를 설정하는 것입니다.http://zsh.sourceforge.net/FAQ/zshfaq04.html#l50.
setopt complete_in_word
그러면 커서 위치에 있는 단어가 채워지고 커서 지점 뒤의 모든 문자가 채워진 내용으로 대체됩니다.