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コマンドは、もう少し便利ですが、私の2つの文字を変更するために選び出してしまったなぜそれが私に教えてくれありません。

$ 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
完全性と<kbd> Space </ kbd> <kbd> Tab </ kbd>の
+1

回答:


10

やっとわかった。これは、中に隠れていた/etc/bash_completions皮肉- -それが私のファイル名の補完に表示されていなかったように私は見過ごさ。

有用なbash_completionsは、それがghostviewが処理できると期待されるファイル名を完成させることのみを可能にすることを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.