Началось все с простого
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
взялись?
bash
autocomplete
MSW
источник
источник
Ответы:
Наконец-то я понял. Это было скрыто, в
/etc/bash_completions
котором - по иронии судьбы - я упустил из виду, поскольку это не появилось в моих дополнениях имени файла.Полезный bash_completions считает, что это
gv
означает,ghostview
что он позволит мне только завершить имена файлов, которые, как он ожидает, может обработать ghostview:Я думаю, это считается «чертовски полезным». Добавление
чтобы моего
~/.bash_aliases
файла было достаточно.источник