「git bashの入力補完で拡張子を出さない方法を知りたい」の質問に対して、compete -E
で出来るのではないかと思ったのですが、出来ません。
簡略化すると、
Bash
1$ foo() { COMPREPLY=($(compgen -W "abc def ghi" -- "$2")); } 2$ complete -E -F foo 3$ (タブキー2回) 4abc def ghi 5$
と補完候補が表示されるのですが、続けて、
Bash
1$ ab(タブキー)
でabc
が補完されるかと思いきや、
Bash
1$ ab(タブキー2回) 2ab abrt-action-save-package-data 3abrt-action-analyze-backtrace abrt-action-trim-files 4abrt-action-analyze-c abrt-auto-reporting 5・・・・・
と、ab
で始まるコマンドが補完候補として出てきてしまいます。
man bashでは確かに、
-E オプションは、残りのオプションと動作を “空の”コマンド補完 (空行に対して試みられる補完) に適用することを示します。
と書いてあって、「空」の時だけというのは記述通りなのですが、これだと-E
オプションの使い道がありません。
また、上記の「ab
タブ2回」のように、コマンドがまだ認識されていない状態での補完をコマンド名補完以外にする方法も無さそうです。
これはもう、どうしようも無いのか、あるいは何か見落としがあるのでしょうか?
あなたの回答
tips
プレビュー