bash 완료 처리가 잘못되었습니다. 디버깅 방법은 무엇입니까?


9

그것은 모두 간단한 것으로 시작

alias gv='gvim --remote-quiet'

이제는 gv Space Tab일반적으로 파일 이름을 제공 해야하는 곳에 아무것도 제공하지 않습니다. 이상하게도

alias gvi='gvim --remote-quiet'

예상대로 작동합니다. 분명히 해결 방법이 있지만 gv특수 처리를 위해 무엇을 포착하고 있는지 알고 싶습니다 . 파일 이름 완성을 올바르게 수행 하는 것과 동일한 설정 compoptgv공유하므로 도움이되지 않습니다 ls.

$compopt gv
compopt +o bashdefault +o default +o dirnames -o filenames +o nospace +o plusdirs gv
$ compopt ls
compopt +o bashdefault +o default +o dirnames -o filenames +o nospace +o plusdirs ls

complete명령은 약간 더 도움이되지만 왜 내 두 문자가 변경되어 단일화되었는지 이유는 알 수 없습니다.

$ complete -p gv
complete -o filenames -F _filedir_xspec gv
$ complete -p ls
complete -o filenames -F _longopt ls
$ complete -p echo
bash: complete: echo: no completion specification
$ alias gvi='gvim --remote-silent'
$ complete -p gvi
bash: complete: gvi: no completion specification

어디 complete -o filenames -F _filedir_xpec gv에서 왔습니까?


1
완전성에 대해 +1과 <KBD> 공간 </ KBD> <KBD> 탭 </ KBD>
알렉산드르 Levchuk

답변:


10

나는 마침내 그것을 얻었다. 그것은에 숨어 /etc/bash_completions아이러니하게도 - - 어떤 내 이름의 완료에 나타나지 않았다 나는 간과.

친절한 bash_completions는 생각 gv을 의미 ghostview그것은 단지 내가 그것을 고스트 뷰가 처리 할 수있는 기대하고 파일 이름을 완료 할 수 있도록 :

complete -f -X '!*.@(@(?(e)ps|?(E)PS|pdf|PDF)?' gv ggv kghostview

나는 "너무 도움이된다"고 생각합니다. 첨가

alias gv='gvim --remote-silent'
complete -r gv 

~/.bash_aliases파일로 충분했다.


칭찬! 훌륭한 문제 해결!
dag729
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.