我正在运行 Ubuntu 18.04,并使用 VisualStudio Code 进行大部分代码编辑。要从终端打开文件,我运行以下命令
code fileName.java
一旦我编译了 Java 代码,目录中还会有关联的 .class 文件。这意味着下次我打开文件并尝试使用“Tab”自动完成命令时,它将自动完成为
code fileName.
你能告诉我如何更改命令的选项吗code
,这样当我输入
code f
然后按 Tab,它会自动完成
code fileName.java
而不仅仅是
code fileName.
答案1
将其添加到您的.bashrc
:
complete -f -X '!*.java' code
并且source ~/.bashrc
它曾经
- 将于
-f
F仅限文件。 - 允许
-X pattern
定义自定义图案 - 这种习俗自动完成只会发生在你的
code
命令上,任何不匹配的完成图案从完成列表中删除。
答案2
解决问题的最佳方法是创建 bash 完成脚本。
使用您最喜欢的文本编辑器创建具有名称的新 bash 完成脚本java
,例如,让它成为 nano 编辑器:
user@pc:~$ sudo nano /etc/bash_completion.d/java
将代码插入脚本:
_code()
{
local cur=${COMP_WORDS[COMP_CWORD]}
local IFS=$'\n'
COMPREPLY=( $( compgen -f -X '!*.java' -- $cur ) )
}
complete -o filenames -F _code code
保存更改并关闭文本编辑器。
最后重新加载 bash 完成规则 - 注意第一个斜杠前的“点”和后面的空格:
user@pc:~$ . /etc/bash_completion
这个解决方案有2个优点:
- 该脚本在整个系统范围内有效。
- 它支持文件名中的空格。