【问题标题】:Strange javac Tab Completion for Classpath类路径的奇怪 javac 选项卡完成
【发布时间】:2017-01-24 04:36:34
【问题描述】:

javac 命令有一个奇怪的制表符补全-cp-classpath。我的印象是-cp-classpath 的别名。但是,当我在 -classpath 标志之后按 Tab 键时,我会按预期得到 .jar 文件。当我使用-classpath 按标签时,我得到:

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 16.04 和 javac 1.8.0_111 中使用 bash。

【问题讨论】:

    标签: bash javac tab-completion bash-completion


    【解决方案1】:

    此功能由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)
        ...
    

    因此,如果您愿意,您可以从declare -f 命令中获取_javac() 的完整定义,将其修改为在case 语句中包含-cp,并将其附加到end em> 的 bash 初始化文件(.bashrc.bash_profile 等)。然后,当你启动一个新的 shell 时,新的_javac() 将用于完成javac 命令。

    此外,最新版本的代码也可以在github 上查看。那里定义的其他命令完成(javajavadoc)理解速记标志,所以我相信带有此问题修复程序的拉取请求会受到欢迎。


    更新:现在源代码中的 fixed

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      • 1970-01-01
      相关资源
      最近更新 更多