제가 묻는 질문은 약간 구체적이며 Unix Stackexchange의 다른 자동 완성 질문과 다를 수 있습니다.
다음과 같은 디렉터리가 있다고 가정해 보겠습니다.
-rw-r--r-- 1 hlin117 staff 1.1K Sep 19 13:05 doc.aux
-rw-r--r-- 1 hlin117 staff 26K Sep 19 13:05 doc.log
-rw-r--r-- 1 hlin117 staff 177K Sep 19 13:05 doc.pdf
-rw-r--r-- 1 hlin117 staff 13K Sep 19 13:01 doc.tex
그렇게 하려고 해도 별 소용이 없고 , 일반적인 상황이라면 나도 그렇게 vim doc.pdf
하지 않을 것이다 . 대신 자주 하는 편이에요vim doc.log
vim doc.aux
vim doc.tex
불행하게도 tab-autocomplete는 단지 doc.tex
.
vim \t
이것을 입력 하고 디렉토리의 일부 파일을 무시하도록 하는 방법이 있습니까 ?
보다 일반적으로 command 를 입력 하고 명령을 입력하면 디렉터리의 파일을 무시하는 X \t
설정을 작성할 수 있습니까?X
참고: 저는 zsh를 사용합니다. bash 및 zsh에 대한 유사한 솔루션이 있는지 확실하지 않습니다.
답변1
zsh에서 "새로운" 완성 시스템을 사용하려면(예: 시스템 compinit
에 있는 경우 .zshrc
) 다음을 사용하세요.file-patterns
스타일.
zstyle ':completion:*:*:vim:*' file-patterns '^*.(aux|log|pdf):source-files' '*:all-files'
완료되지 않은 경우 *.(aux|log|pdf)
패턴과 일치하는 파일만 명령줄에서 완료됩니다.vim
*
특히 명시적으로 일치하는 명령을 제외한 모든 명령을 일치시키기 위해 명령 이름 패턴을 사용할 수 있습니다 .
답변2
zsh를 사용하지 않고 더 일반적인 옵션이 있기 때문에 여기에 추가합니다.
.bashrc
bash 내장 명령을 사용하여 한 줄만 입력하면 됩니다 complete
. 예를 들어:
complete -f -X '*.@(aux|log|pdf)' -o plusdirs vim
-f
파일 이름을 완성할 위치는 -X
glob 문자열을 사용하여 가능한 선택 항목에서 일치하는 패턴을 필터링 -o plusdirs
하고~ 후에목록에 하위 디렉터리를 추가합니다.