vi
특정 파일 이름(예: files )을 제외하도록 기존 bash 자동 완성 규칙을 수정하고 싶습니다 config.log
. 나는 FIGNORE
성공하지 못한 채 환경 변수를 사용해 보았습니다 . 기본 제공 규칙을 사용하면 complete
기존 규칙을 수정하는 대신 덮어씁니다.
이를 수행할 수 있는 방법이 있습니까?
답변1
Bash 완료에서 쓸모 없는 파일 이름이나 확장자를 제외하려면 .bashrc 파일에 다음 줄을 추가하세요.
FIGNORE=".log:.dvi:.pdf:"
답변2
다음 명령을 사용하여 현재 구성을 볼 수 있습니다.
complete -p vi
complete -o bashdefault -o default -o filenames -o nospace -F _exp_ vi
그리고 사용된 쉘 함수의 정의
type _exp_
결과를 필터링할 수 있는 complete
기능/옵션이 있습니다 . -X
문제는 이것이 complete
액션에서만 작동한다는 것입니다. 결과 가 작동하지 않습니다 -o default
(모르겠어요 -o bashdefault
).
구성 요소를 변경할 수 있습니다.
complete -d -f -o filenames -o nospace -F _exp_ -X '@(config.log|config.doc)' vi
안타깝게도
-X
통화에는 하나만 있을 수 있습니다complete
(이전 통화는 덮어쓰게 됩니다).작동하려면 위의 내용이 필요합니다
shopt -s extglob
. 그렇지 않으면 이름이나 패턴("*.log"
) 만 사용할 수 있습니다.