zsh가 파일 이름 중간에 작업을 수행하도록 하려면 어떻게 해야 합니까?

zsh가 파일 이름 중간에 작업을 수행하도록 하려면 어떻게 해야 합니까?

이게 효과가 있어

일반적으로 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

그러면 커서 위치에 있는 단어가 채워지고 커서 지점 뒤의 모든 문자가 채워진 내용으로 대체됩니다.

관련 정보