การประมวลผลเสร็จสิ้น bash ไม่ดีวิธีการแก้ปัญหา?


9

ทุกอย่างเริ่มต้นด้วยวิธีง่าย ๆ

alias gv='gvim --remote-quiet'

และตอนนี้gv Space Tabไม่ได้ให้สิ่งใดตามที่ควรให้ชื่อไฟล์ ผิดปกติ

alias gvi='gvim --remote-quiet'

ทำงานตามที่คาดไว้ ฉันมีวิธีแก้ปัญหาอย่างชัดเจน แต่ฉันต้องการทราบว่าอะไรคือสิ่งที่ทำให้ฉันgvต้องดำเนินการพิเศษ compoptไม่มีความช่วยเหลือในการgvแชร์การตั้งค่าเดียวกันกับการ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> Space </kbd> <kbd> แท็บ </kbd>
Aleksandr Levchuk

คำตอบ:


10

ฉันเข้าใจแล้วในที่สุด มันกำลังซ่อนตัวอยู่/etc/bash_completionsซึ่ง - แดกดัน - ฉันมองข้ามไปเพราะมันไม่ปรากฏในชื่อไฟล์ที่ฉันทำสำเร็จ

bash_completions ที่เป็นประโยชน์คิดว่านั่นgvหมายความว่าghostviewมันจะอนุญาตให้ฉันกรอกชื่อไฟล์ที่คาดว่า 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.