有一个命令行功能我一直想要,我考虑过如何最好地实现它,但是我一无所获……
所以我想要的是,当我开始输入文件名并按下tab键时,例如:
# git add Foo<tab>
我希望它能运行find . -name "*$1*"
,并自动完成匹配文件的完整路径到我的命令行。
目前为止,我知道我必须编写一个函数来调用应用程序以获取所需的参数,例如git add
。之后,它需要捕获Tab键事件并执行上述查找操作,如果结果有多个,则显示结果,如果只有一个,则填充结果。
我还没有弄清楚如何在一个函数内部捕获Tab键事件。
因此,基本上是伪代码:
gadd() {git add autocomplete_file_search($1)}
autocomplete_file_search(keyword) {
if( tab-key-pressed ){
files = find . -name "*$1*";
if( filecount > 1 ) {
show list;
}
if( files == 1 ) {
return files
}
}
}
有什么想法吗?
谢谢。
complete -F _git_add_complete -o default -o bashdefault -D
但您可能希望将该函数重命名为更合适的名称。 - geirhacomplete -p
检查单个命令。例如:complete -p ls
。那些没有设置完成的命令将使用默认的完成;complete -p -D
。我自己不使用bash-completion,所以我不确定你需要覆盖多少它的完成。 - geirha