我刚刚开始在 vim 中使用 Command-T 插件,它非常棒。如果您还没有听说过它,它允许您输入以下内容:
Sb
Run Code Online (Sandbox Code Playgroud)
从列表中选择Something.hs-boot
src/project/Control/Whatever/Foobs.hs
src/project/Control/Whatever/Something.hs-boot
src/project/Control/Whatever/Something.hs
Run Code Online (Sandbox Code Playgroud)
等等。
我想知道是否可以在 zsh 中使用类似的自动完成样式。我知道 shell 完成不可能像 vim 完成那样广泛,因为 shell 完成可能不应该在每次键入字母时搜索整个系统,但是是否有某种类似的完成,我至少可以类型
s/p/c/w/Sb<tab>
Run Code Online (Sandbox Code Playgroud)
并获得与上述类似的效果?
我听说 zsh 有一个非常好的可编程自动完成功能,但我的 shell-fu 相当弱。
有人知道怎么设置吗?
要完成部分路径,只需初始化完成系统就足够了(至少在我的系统上,使用zsh v4.3.17
):
autoload -U compinit && compinit
zmodload zsh/complist
Run Code Online (Sandbox Code Playgroud)
如果你想要更花哨一点,你可以使匹配不区分大小写:
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
Run Code Online (Sandbox Code Playgroud)
更新1:
我不知道你是否可以执行 Command-T 风格的自动完成...但是由于 zsh 必须在显示某些内容之前获取所有匹配项,因此可以动态执行此操作,尤其是在有很多子目录/文件的地方,可能不可行。
但是您可以使用:
**/*thing <Tab>
Run Code Online (Sandbox Code Playgroud)
匹配**
当前目录的所有文件和子目录。
想法: 如果它不必是最新的文件列表,您可以编写一个使用输出的完成函数locate
(即预先计算的文件列表)
更新2: https ://github.com/junegunn/fzf#fuzzy-completion-for-bash-and-zsh
归档时间: |
|
查看次数: |
533 次 |
最近记录: |