2017-01-24 6 views
2

javacコマンドには、-cp-classpathという奇妙なタブ補完があります。私は印象の下にあった-cp-classpathの別名でした。しかし、-classpathフラグの後にタブを押すと、私は.jarファイルを期待どおりに取得します。私は-classpathでタブを押すと、私が手:奇妙なjavacクラスパスのためのタブ補完

また
javac -classpath <tab> 
javac -classpath lib/ <tab> 
javac -classpath lib/test.jar 

javac -classpath .: <tab> 
javac -classpath .:lib/ <tab> 
javac -classpath .:lib/test.jar 

-cp

javac -cp <tab> 
javac -cp lib/ <tab> 
javac -cp lib/ 

javac -cp .: <tab> 
javac -cp .: 

と私はUbuntuのではbashを使用しています16。 04とjavac 1.8.0_111が必要です。

答えて

3

この機能はbash-completionパッケージによって実装されています。あなたはそうのように、関連する関数のコードを見つけることができます。

あり
$ complete -p javac 
complete -F _javac javac # the function `_javac' is used to complete the command `javac' 
$ declare -f _javac .  # this will print the function code 

あなたは、関連するコードがあることがわかります:

case $prev in 
    ... 
    -classpath|-bootclasspath|-sourcepath|-extdirs) 
    ... 

あなたがしたい場合、あなたは_javac()の定義全体を取ることができますdeclare -fコマンドから、caseステートメントに-cpを含むように変更し、bash initファイルの末尾.bashrcまたは.bash_profileなど)に追加します。新しいシェルを起動すると、新しい_javac()javacコマンドを完了するために使用されます。

また、最新リリースのコードはgithubでご覧になれます。そこに定義されている他のコマンド補完(javajavadoc)はショートハンドのフラグを理解していますので、この問題の修正を伴うプルリクエストを歓迎します。


更新:これは今ソースでfixedです。