【问题标题】:Make zsh tab autocomplete cycle by modification date按修改日期使zsh选项卡自动完成循环
【发布时间】:2018-11-18 14:08:23
【问题描述】:

目前,当我执行 cd D+ Tab + Tab zsh 按字母顺序循环以“D”开头的所有文件,但我希望它改为循环反向修改日期。因此,首先向我显示最新的文件,然后在按 Tab 时向后退。

如何让我的终端以这种方式运行?

【问题讨论】:

    标签: terminal zsh


    【解决方案1】:

    只需将以下内容添加到您的~/.zshrc

    zstyle ':completion:*:cd:*' file-sort modification
    

    这将仅更改 cd 命令的文件完成顺序。任何其他程序的完成仍将按词汇顺序排列。如果您想将此排序扩展到特定的其他程序,例如 catvim,您可以通过添加以下代码来实现:

    zstyle ':completion:*:(cd|cat|vim):*' file-sort modification
    

    如果您想对所有文件名补全使用此顺序,则以下方法可以解决问题:

    zstyle ':completion:*' file-sort modification
    

    欲了解更多信息,请查看zshcompsys manpage


    如果您还没有使用“新”补全系统,您可以通过运行compinstall 启用它,这将允许您以交互方式设置补全系统。 (它是新的,因为它还有一个旧的补全系统,也有最新的补全系统。但它是在 1999 年随版本 3.1.6 引入的,所以它已经是任何当前 zsh 安装的一部分,任何只需要待配置)

    或者,您只需将以下行添加到您的.zshrc 以获得最小/默认配置。

    # The following lines were added by compinstall
    zstyle :compinstall filename "${ZDOTDIR:-$HOME}/.zshrc"
    
    autoload -Uz compinit
    compinit
    # End of lines added by compinstall
    

    【讨论】:

    • 应该工作,但它不适合我。它仍然按默认顺序完成。这既不是词法也不是修改日期。
    • @user7867665 嗯……您使用的是什么版本的 ZSH,您是否使用任何可能会干扰的配置框架(oh-my-zsh、prezto...)?
    • zsh 5.0.2 (x86_64-redhat-linux-gnu),没有其他配置。我只在终端上运行了您建议的第一个命令,而不是在 .zshrc 中(或者在我的情况下是 .zprofile)
    • 您是否加载了“新”(大约 19 岁)完成系统?也就是说,compinit 命令是否出现在您的配置中?此外,.zprofile 只会为 login shells 加载(例如控制台或 SSH)。在终端仿真器中,ZSH 通常作为 interactive shell 运行,因此.zprofile 可能不会被加载。 (从你的问题我无法真正判断,情况就是这样。)
    • 我不认为它已加载。没有compinit。什么配置?我会尝试安装它
    猜你喜欢
    • 2020-03-24
    • 2012-06-12
    • 1970-01-01
    • 2020-02-08
    • 2013-02-14
    • 2012-01-08
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多