zsh는 태그 순서 일치 패턴을 완성합니다.

zsh는 태그 순서 일치 패턴을 완성합니다.

이용 가능합니까?패턴 일치?ignored-patterstag-order

다음과 같이 첫 번째 시도에서 접두어 없이 제한된 일치 완료의 사용자 정의 세트를 시도하고 싶습니다.

$ man <Tab>
man info zshall

이것은 단순화된 예입니다. 나는 git에서도 같은 일을 하고 싶다. 내 현재 스타일은 무시할 특정 별칭 또는 명령 매개 변수 집합에 의존하는데 이는 이상적이지 않습니다.

zstyle ':completion:*:complete:git:*' force-list  always
zstyle ':completion:*:complete:git:*' tag-order \
  'main-porcelain-commands:-freq:frequently\ used\ commands aliases'
zstyle ':completion:*:complete:git:*:main-porcelain-commands-freq' \
  ignored-patterns '(am|archive|bisect|bundle|clean|cherry-pick|citool|fetch|gc|gui|ls-files|log|notes|range-diff|show|stash|status|submodule|subtree|worktree)*'

이는 다음을 나타냅니다.

$ git <Tab>
add                -- add file contents to index
ai                 -- alias for 'add --interactive'
amend              -- alias for 'commit --amend --reuse-message=HEAD'
branch             -- list, create, or delete branches
checkout           -- checkout branch or paths to working tree
clone              -- clone repository into new directory
commit             -- record changes to repository
ctags              -- alias for '!.git/hooks/ctags'
describe           -- show most recent tag that is reachable from a commit
df                 -- alias for 'diff --staged'
diff               -- show changes between commits, commit and working tree, etc.
format-patch       -- prepare patches for e-mail submission
graph              -- alias for 'log --graph --oneline --decorate'
grep               -- print lines matching a pattern
init               -- create empty git repository or re-initialize an existing one
ls                 -- alias for 'ls-files'
merge              -- join two or more development histories together
mv                 -- move or rename file, directory, or symlink
pull               -- fetch from and merge with another repository or local branch
push               -- update remote refs along with associated objects
rebase             -- forward-port local commits to the updated upstream head
res                -- alias for 'reset --soft HEAD^'
reset              -- reset current HEAD to specified state
revert             -- revert existing commits
rm                 -- remove files from the working tree and from the index
shortlog           -- summarize git log output
st                 -- alias for 'status --short --untracked-files=no'
tag                -- create, list, delete or verify tag object signed with GPG

모든 것을 무시하고 사용해야 하는지 fake-always, 에서 부정 검색을 사용할 수 있는지 ignored-patterns, 아니면 시스템에 실제로 존재하는 몇 가지 매뉴얼 페이지를 선택하고 자동으로 사용하기 위해 사용자 정의 완료 함수를 작성해야 하는지 궁금합니다. 먼저 라벨을 정의하세요.

답변1

다음에서 부정적인 조회를 수행할 수 있습니다 ignored-patterns. 단일 패턴을 사용하여 다음을 사용합니다.^부정 연산자. ( extended_glob완료 중에는 항상 활성화되지만 setopt extended_glob완료 후에도 유용하므로 어쨌든 권장합니다.)

zstyle ':completion:*:complete:git:*:main-porcelain-commands-freq' \
  ignored-patterns '^(add|branch|…)'

관련 정보