我在我的Mac和ZSH上使用iTerm和我的zsh主题为dstufft
我是在.bash_rc
function goToPythonApp {
# no params given
if [ -z "$1" ]; then
cd ~/Documents/Apps/PythonApps
else
cd ~/Documents/Apps/PythonApps/$1
fi
}
所以我可以输入goToPythonApp abc
然后我会切换到~/Documents/Apps/PythonApps/abc
但有时,我会忘记~/Documents/Apps/PythonApps/
有没有办法输入goToPythonApp
,然后按<space>
,然后按<tab>
生成~/Documents/Apps/PythonApps/
中的条目列表?
类似于ZSH(或oh-my-zsh)如何为半类命令执行自动完成?
或者我可以输入goToPythonApp ab
然后按<tab>
,自动完成会建议abc
这是~/Documents/Apps/PythonApps/
文件夹中的有效条目吗?
更新
使用下面答案中建议的技术,然后我得到了command not found for complete
。
然后,在我提供autoload bashcompinit && bashcompinit
.bash_rc file
command not found for complete
已消失,但标签仍不起作用
答案 0 :(得分:3)
在Zsh中,您不需要自己的功能。将以下内容添加到setopt autocd
pyapps=~/Documents/Apps/PythonApps
文件中:
autocd
cd
允许您只需键入目录名称即可更改为目录,而不是显式使用man zshexpn
命令。
静态命名目录(在FILENAME GENERATION下的pyapps
中描述)允许您为目录定义〜-prefixed别名。只要~pyapps
不是系统上用户的名称,变量的内容就会在您使用它的任何地方替换~pyapps
。
结合这两个功能,
cd "$pyapps"
相当于~pyapps/Project1
cd "$pyapps/Project1"
相当于~pyapps/<TAB>
$pyapps
将允许您对{{1}}。答案 1 :(得分:2)
你可以使用bash完成功能来处理这个
将此脚本添加到您的rc文件或bash_profile文件中,然后重新打开终端
function goToPythonApp {
# no params given
if [ -z "$1" ]; then
cd ~/Documents/Apps/PythonApps/
else
cd ~/Documents/Apps/PythonApps/$1
fi
}
function _GPA {
local cur
cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $( compgen -S/ -d ~/Documents/Apps/PythonApps/$cur | cut -b 18- ) )
}
complete -o nospace -F _GPA goToPythonApp