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> Простір </kbd> <kbd> Tab </kbd>
Олександр Левчук

Відповіді:


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.