Terminal 按修改日期使zsh选项卡自动完成周期

Terminal 按修改日期使zsh选项卡自动完成周期,terminal,zsh,Terminal,Zsh,当前,当我执行cd D+Tab+Tab zsh时,会按字母顺序在以“D”开头的所有文件上循环,但我希望它按反向修改日期循环。因此,首先显示最新的文件,然后在按Tab键时向后看 我如何才能让我的终端以这种方式工作?只需将以下内容添加到您的~/.zshrc: zstyle ':completion:*:cd:*' file-sort modification 这将仅更改cd命令的文件完成顺序。任何其他程序的补全仍将按词法顺序进行。如果要将此顺序扩展到特定的其他程序,例如cat和vim,可以通过添加

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


我如何才能让我的终端以这种方式工作?

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

zstyle ':completion:*:cd:*' file-sort modification
这将仅更改
cd
命令的文件完成顺序。任何其他程序的补全仍将按词法顺序进行。如果要将此顺序扩展到特定的其他程序,例如
cat
vim
,可以通过添加以下内容来实现:

zstyle ':completion:*:(cd|cat|vim):*' file-sort modification
如果您希望对所有文件名完成使用此排序,则以下操作可以完成:

zstyle ':completion:*' file-sort modification
有关更多信息,请查看


如果您尚未使用“新”完成系统,可以通过运行
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 Hmm…您使用的是什么版本的ZSH?您是否使用任何可能会干扰的配置框架(噢,我的ZSH,prezto…)?ZSH 5.0.2(x86_64-redhat-linux-gnu),没有其他配置。我只在终端上运行了您建议的第一个命令,而不是在.zshrc(或者在我的例子中是.zprofile)中。是否加载了“新的”(大约有19年历史的)完成系统?也就是说,命令
compinit
是否出现在配置中?另外,
.zprofile
将仅为登录shell(例如控制台或SSH)加载。在终端模拟器中,ZSH通常作为交互式shell运行,因此可能无法加载
.zprofile
。(从你的问题来看,我真的不知道是哪种情况。)我认为它没有加载。没有
compinit
。什么配置?我将尝试安装它