当我input“svn add path / to / somefile …”并且选项卡自动完成时,系统应该只完成当前不在 SVN控制下的文件/目录。 同样,当我提交,删除或parsing文件,选项卡完成应该只完成相关的文件,我正在做什么(即,修改,目前在SVN或冲突)。 这在SVN中非常重要,您input的每个文件名都可以从智能自动完成中获益,但它适用于其他程序。
我知道bash有一个bash_completion文件,可以用来以编程方式改变这种行为,但我还没有find一个体面的SVN完成实例,它实际上完成文件名而不是SVN命令名称。
我的问题是:有没有人有这样的设置? 有没有人使用不同的shell或工具来做类似的事情? 有没有人给过这个想法?
看看在这里find的完成脚本。 它可能会做你想做的事情。
摘录看起来很有希望:
# 'files' is set according to the current subcommand case $cmd in st*) # status completion must include all files files=$cur* ;; ci|commit|revert|di*) # anything edited files=$($status $cs| _svn_grcut '@([MADR!]*| M*|_M*)') ;; add) # unknown files files=$($status $cs| _svn_grcut '\?*') ;;