_path_files
和的 -F 选项的格式是什么compadd
?
我将几个目录传递给_path_files
:
_path_files -W "($base_directories)" -/
但我不想为这个特定命令完成其中一些目录树。
我能找到的文档_path_files
说它接受一个-F
选项 - 就像 一样compadd
,但我找不到传递它们的格式。
折腾也没有什么成果。
我试过,例如,
_path_files -W "($base_directories)" -/ -F shared; # shared still shows up
_path_files -W "($base_directories)" -/ -F "(shared)"; # barfs on that guy
答案1
如果您想忽略shared
目录树的根目录,即如果您忽略$base_directories
.但如果您想忽略shared
层次结构中更深层次的某个地方,则需要-F "(shared **shared)"
.您还可以将模式放入数组中,这将减少引用的麻烦。
local -a ignored base_directories
base_directories=(…)
ignored=(shared '*/shared')
_path_files -W base_directories -/ -F ignored
_cvs
和中的标准发行版中有示例_darcs
。
如果这没有帮助,请尝试通过添加set -x
和set +x
解决有问题的代码来调查发生了什么,或者setopt local_options xtrace
(也称为set -x
仅在当前函数的持续时间内更改选项)。