bash hoàn thành xử lý xấu, làm thế nào để gỡ lỗi?


9

Tất cả bắt đầu với một đơn giản

alias gv='gvim --remote-quiet'

và bây giờ gv Space Tabkhông đưa ra bất cứ nơi nào bình thường nên cung cấp tên tập tin. Kì lạ

alias gvi='gvim --remote-quiet'

hoạt động như mong đợi. Tôi rõ ràng có một cách giải quyết, nhưng tôi muốn biết điều gì đang thu hút tôi gvđể xử lý đặc biệt. compoptkhông giúp ích gì khi gvchia sẻ các cài đặt giống như lshoàn thành tên tệp một cách chính xác.

$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

Các completelệnh là hơi hữu ích hơn nhưng nó không cho tôi biết tại sao hai nhân vật của tôi đã chỉ ra cho thay đổi:

$ 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

Nơi nào đã complete -o filenames -F _filedir_xpec gvđến?


1
+1 cho tính đầy đủ và <kbd> Space </ kbd> <kbd> Tab </ kbd>
Aleksandr Levchuk

Câu trả lời:


10

Tôi đã nhận nó, cuối cùng. Nó đang ẩn trong /etc/bash_completionsđó - trớ trêu thay - tôi đã bỏ qua vì nó không xuất hiện trong phần hoàn thành tên tệp của tôi.

Bash_completions hữu ích nghĩ rằng điều đó gvcó nghĩa là ghostviewnó sẽ chỉ cho phép tôi hoàn thành tên tệp mà nó mong đợi ghostview có thể xử lý:

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

Tôi nghĩ rằng nó được coi là "quá hữu ích". Thêm

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

để ~/.bash_aliasestập tin của tôi là đủ.


Khen ngợi! Khắc phục sự cố tuyệt vời!
dag729
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.