我正在使用Oh-My-ZSH创建一些功能和功能,以减轻重复的工作量。
我需要从计算机的任何位置导航到我的前端目录。这就是我所拥有的:
frontend(){
cd ~/Desktop/Work/Frontend
cd $1
}
现在,当我输入frontend
或frontend myProject
时效果很好,但是,我的所有项目文件夹都会被.m
,.tablet
等后缀。
我怎样才能写出:
让我自动导航到.something
当有多个选项(例如project.m
和project.tablet
)时,会提示我使用与您在终端中点击标签类似的选项,并为其提供多个自动填充选项。
我希望我的问题有道理。
感谢。
答案 0 :(得分:4)
首先找到zsh
解决方案,然后找到bash
解决方案。
更新:原来zsh
实施(基于内置compctl
)比bash
实施简单得多(基于内置{{1} }})。
将感兴趣的代码保存到文件(例如complete
)和源(例如frontend
);交互式地,或者最好是来自你的bash / zsh个人资料。
一旦到位,. ./frontend
中子目录名称的自动完成将如下工作:
~/Desktop/Work/Frontend
并按TAB键。frontend myProject
与myProject
中的子目录的名称进行前缀匹配:
~/Desktop/Work/Frontend
将立即展开到完整的子目录名称。myProject
:立即列出所有匹配子目录的名称。zsh
:再次按TAB 列出所有匹配子目录的名称注意:在bash
中,要同时只需按TAB 一次列出多个匹配项,请将以下内容添加到您的shell个人资料bash
。
zsh 解决方案:
bind "set show-all-if-ambiguous on"
bash 解决方案:
注意:遗憾的是,# Define the shell function.
frontend(){
cd ~/Desktop/Work/Frontend/"${1:-}"
}
# Tell zsh to autocomplete directory names in the same directory as
# the function's when typing a command based on the shell function.
compctl -/ -W ~/Desktop/Work/Frontend frontend
没有参数 - 它始终为当前目录自动完成。因此,需要一个返回潜在匹配的自定义shell函数,并结合complete -o dirnames
。
-o filenames
答案 1 :(得分:1)