我有一个包含深层嵌套文件夹结构的项目。大多数时候,我知道要使用的文件的名称,但是当我想编辑它时,文件夹路径太长/太复杂而无法输入,例如:
vim folder/is/deep/down/there/myfile.js
如果文件名是唯一的,有没有办法让 shell 自动为我填充路径,例如:
vim *myfile.js
按tab
vim folder/is/deep/down/there/myfile.js
我主要使用 bash,但如果它可以解决问题,我也可以使用 zsh。
答案1
在 zsh 中,你可以使用**
运算符执行以下操作:
vim **/myfile.js
然后按下Tab,zsh 将递归搜索该myfile.js
文件。
答案2
在 Bash 4 及更高版本中,你还可以使用**
运算符进行通配符(获取文件名)和制表符补全(类似于Heptite 的 zsh 答案)。
我不知道**
Bash(可能是 4.0)何时添加了 tab 补全功能,甚至不知道它们是否是标准功能,但它们在 4.3.11(在 Lubuntu 上)中对我有用。它们似乎默认处于激活状态。
**
但是,默认情况下不会激活 for globbing的行为,需要您globstar
使用 设置选项shopt
。也就是说,shopt -s globstar
在尝试**
在 globbing 模式中使用之前,在某处执行(最有可能在您的 中.bashrc
)。值得指出的是,globstar
当有多个匹配项时,激活可能会干扰您的制表符完成。我在快速测试中发现了这一点。