![Bash/zsh 탭 자동 완성: 초기 명령이 주어지면 자동 완성을 사용하여 디렉터리의 특정 파일을 무시합니다.](https://linux55.com/image/73368/Bash%2Fzsh%20%ED%83%AD%20%EC%9E%90%EB%8F%99%20%EC%99%84%EC%84%B1%3A%20%EC%B4%88%EA%B8%B0%20%EB%AA%85%EB%A0%B9%EC%9D%B4%20%EC%A3%BC%EC%96%B4%EC%A7%80%EB%A9%B4%20%EC%9E%90%EB%8F%99%20%EC%99%84%EC%84%B1%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%9D%98%20%ED%8A%B9%EC%A0%95%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%AC%B4%EC%8B%9C%ED%95%A9%EB%8B%88%EB%8B%A4..png)
제가 묻는 질문은 약간 구체적이며 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
하고~ 후에목록에 하위 디렉터리를 추가합니다.