如何设置别名以 cd 进入带有补全的子目录?

如何设置别名以 cd 进入带有补全的子目录?

我已经在我的中设置了这个功能~/.zshrc

cdp() {
  cd "/mnt/c/Users/Mark/PhpstormProjects/$1"
}

但我没有得到它的制表符补全。有什么方法可以让目录名称在我按 Tab 键时自动完成吗?

答案1

定义一个完成功能为了cdp。按照惯例,该函数称为_cdp。您可以在您的中定义它.zshrc并显式分配它compdef

_cdp () {
  … # code goes here
}
compdef _cdp cdp

或者,将完成代码放入您$fpath调用_cdp的文件中完成自动加载指令

#compdef cdp
… # code goes here

要完成目录,请使用_files -/。要完成相对于当前目录不同位置的目录,请使用选项-W。由于该函数只接受一个参数,只完成第一个参数

_cdp () {
  ((CURRENT == 2)) &&
  _files -/ -W /mnt/c/Users/Mark/PhpstormProjects
}

除了此功能之外,您可能更喜欢也可能不喜欢将目录添加到cdpath

cdpath+=/mnt/c/Users/Mark/PhpstormProjects

相关内容