我的目标是输入client air
标签并填写我~/clients
目录中的客户列表。
由于希望我的客户列表能够增长,我不再需要硬编码别名命令,而是使用client
来处理cd /Users/pjammer/clients
部分,然后使用zsh奇迹般地显示ls
部分该目录的1}},允许我在目录中自动填充目录名并直接进入。
思想?
答案 0 :(得分:2)
警告,这是[kindof]宣传
我开发了一个可能达到你想要的远程插件。
主要概念是diraction
,供电目录书签之一。
它是一个别名,使您可以跳转附加的目录,或在其上下文中执行某些操作。
看一下github.com/AdrieanKhisbe/diractions,它在上下文完成中有些aliasdir subpath <tab>
它起初是一个shell函数,然后长大到一个在某个时刻完成的插件。您还可以免费使用环境变量来命令命令中的任何位置,以及命令套件和配置系统来设置书签。
答案 1 :(得分:0)
对于这样的导航需求,我使用了一个简单但可能更通用的解决方案:我使用模糊选择工具设置别名(例如,选择:https://github.com/thoughtbot/pick,但还有许多其他 - fzf,cf:{ {3}})。
巧妙的技巧是将find的内容传递给模糊选择器工具,例如:
cd $(find ~/path/to/clients/ -maxdepth 1 -type d | pick )
然后,您可以在.rc中使用别名(我喜欢使用2个助记符来表示这些别名):
2cli='cd $(find ~/path/toclients/ -maxdepth 1-type d | pick)
键入'2cli'会将您从任何起始位置转到您选择的客户端。
这种方法改变了我在shell中的核心导航。它有效地推广了流行的vim插件Command-T for shell。例如,在git中工作时,我使用以下别名来更改分支:
alias gb='git checkout $(git branch -a | pick)'
另一个例子是打开并编辑一些src文件,你不记得它的名字是在深深的目录中的某个地方,但又是你不太记得的地方:
alias pf="find . \( ! -regex '.*/\..*' \) -type f | pick "
vim $(pf)
这里,pf别名('选择文件')快速在调用cmd的目录中构建文件集合,不包括隐藏目录,并允许您模糊选择要发送的文件名到stdout。将此别名与vim等编辑器结合使用,可以查找并打开一个只用一个别名选择的文件 - 这样就可以一步一步地找到查找,cd'ing和打开文件的命令行为。
要明确的是,这里没有什么新东西 - 模糊选择工具很受欢迎,并且有许多实现(Go,Haskell,python,ruby等),每个都有自己的dis / ad-vantages。我只是传递我的工作流/运动别名,我相信这可以解决您的特殊需求,并提供一种通用的方法。