导航到ZSH中的目录(bash)

时间:2014-02-28 22:13:48

标签: shell zsh oh-my-zsh

我正在使用Oh-My-ZSH创建一些功能和功能,以减轻重复的工作量。

我需要从计算机的任何位置导航到我的前端目录。这就是我所拥有的:

frontend(){
  cd ~/Desktop/Work/Frontend
  cd $1
}

现在,当我输入frontendfrontend myProject时效果很好,但是,我的所有项目文件夹都会被.m.tablet等后缀。

我怎样才能写出:

  • 让我自动导航到.something

  • 后面的文件夹
  • 当有多个选项(例如project.mproject.tablet)时,会提示我使用与您在终端中点击标签类似的选项,并为其提供多个自动填充选项。

我希望我的问题有道理。

感谢。

2 个答案:

答案 0 :(得分:4)

首先找到zsh解决方案,然后找到bash解决方案。

更新:原来zsh实施(基于内置compctl)比bash实施简单得多(基于内置{{1} }})。

将感兴趣的代码保存到文件(例如complete)和(例如frontend);交互式地,或者最好是来自你的bash / zsh个人资料。

一旦到位,. ./frontend中子目录名称的自动完成将如下工作:

  • 例如,键入~/Desktop/Work/Frontend并按TAB键。
  • 然后将
  • frontend myProjectmyProject中的子目录的名称进行前缀匹配:
    • 如果只有1个匹配项,~/Desktop/Work/Frontend将立即展开到完整的子目录名称。
    • 否则,会发出一声嘟嘟声,表示有多个匹配:
      • myProject:立即列出所有匹配子目录的名称。
      • zsh:再次按TAB 列出所有匹配子目录的名称
      • 继续输入,直到前缀匹配明确,然后再按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)

我强烈建议您使用AutoJump

但如果你必须,也许你想使用alias
就像你的~/.zshrc添加:

一样
alias fend='cd path/to/frontend'