了解 zsh blobing、别名和 tab 补全

了解 zsh blobing、别名和 tab 补全

由于显而易见的原因,我刚刚开始zsh并刚刚离开。csh

奇怪的是,移植大量我广泛使用的别名所花的时间比我预期的要长一些。这是其中之一。

在我的 csh 中我有一个“cd 测试用例”如下

alias cdtc 'cd $TOP/\*/\*/tests/!*'

complete cdtc 'p#1#`/bin/ls -1 $TOP/*/*/tests | perl -lne '"'"'print if $_!~m/\// && $_!~m/^$/'"'"'`#'
  1. 我猜想,当我按下 Tab 键时,完整的命令会打印出我层次结构中所有测试文件夹中所有测试用例的选项的整洁的小型彩色列表。

  2. 部分匹配被接受。ie$> cdtc type_a_ <tab>将显示仅以 开头的目录type_a_,但来自所有层次位置

  3. 虽然我理解别名,但我并不完全理解那个 perl 表达式;但我知道它主要与目录名称列表的美观性有关,而不是在单个列中。缺乏完全理解是因为我没有编写别名或完成命令。

我对 zsh 的期望

我以为不需要完整的命令,只需别名即可。我在网上看到过一些讨论 _path_files 的帖子,但我找不到类似的东西_path_dirs

我想要一些指点。

答案1

只需将其添加到您的~/.zshrc文件中,您就会获得相当不错的制表符补全:

autoload -Uz compinit && compinit -C
bindkey '^I' complete-word

无需使用别名或函数。如果你想自定义补全的工作方式,请参阅http://zsh.sourceforge.net/Doc/Release/Completion-System.html

或者,如果你不想费心弄清楚所有这些设置如何相互作用(这很快就会变得相当复杂),请尝试我的插件marlonrichert/zsh-自动完成。它自动配置 Zsh 的完成系统,以获得出色的开箱即用体验,并在您键入时为您提供实时完成功能。

相关内容