zsh 问题:在提示符附近显示最新的文件和目录以及建议的最新文件或目录

11 sorting zsh zshrc zsh-completion iterm2

在 MacOS Big Sur 11.3 上,这是我的.zshrc. 我想获取最新的修改或创建靠近提示的文件和目录(从最新到最旧的排序)。这是我当前的配置~/.zshrc

# ZSH completion
autoload -Uz compinit
compinit
# Colorize completions using default `ls` colors.
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"

# Zsh reverse auto-completion
zmodload zsh/complist
bindkey '^[[Z' reverse-menu-complete
# To get new binaries into PATH
zstyle ':completion:*' rehash true

zstyle ':completion:*:complete:(ls):*' file-sort date reverse
zstyle ':completion:*:complete:(cd):*' file-sort date reverse
zstyle ':completion:*:complete:(cp):*' file-sort date reverse
zstyle ':completion:*:complete:(mv):*' file-sort date reverse

# Variables not very well known
# Disable prompt disappearing on multi-lines
export COMPLETION_WAITING_DOTS="false"
Run Code Online (Sandbox Code Playgroud)

问题是,当我在“l”(实际上是别名)后按 TAB 时:

alias l='grc -es --colour=auto ls --color -Gh -C -lrt'
Run Code Online (Sandbox Code Playgroud)

grc是一个给文件着色的工具。

事实上,我没有将建议的最近修改或创建的文件或目录作为第一个结果。

zsh completion在按 TAB 键这些最近(修改或创建)文件或目录后,我可以添加哪个选项来获取第一个结果?

应用的第一个命令是“ l”,它对应于别名:

alias l='grc -es --colour=auto ls --color -Gh -C -lrt'
Run Code Online (Sandbox Code Playgroud)
  1. 一旦我输入“ l”,当我触摸 TAB(自动)完成时,我希望将最近修改的文件作为我执行“ l” + TAB 完成的提示附近的建议。

作为示例,下图是输入简单的“ l”命令时的情况(参见上面的别名):

别名“l”别名的示例

主要目标:这篇文章最重要的目标:如果我输入“l+TAB+TAB”,我希望最近的文件/目录首先作为建议出现:就我而言,此命令之后的第一个建议是filename2,在第二个“ TAB”建议dir_1和第三个建议之后dir_8,依此类推(参见简单命令“”的顺序l)。

  1. 现在,如果我输入“ l+TAB”,我会得到:

输入“l+TAB”的示例

在选项中,当我执行“ l+TAB”但我不知道要在~/.zshrc. 这不是优先事项。

更新1:typing twice on TAB key我几乎找到了after a 的解决方案"l" alias,它可以被同化为 a ls -lrt。这里是伪魔法命令:

bindkey '\t' reverse-menu-complete
Run Code Online (Sandbox Code Playgroud)

但问题是,使用此选项时,当我第一次按 时TAB,会自动使用最新的文件或目录完成建议。

示例:如果我这样做:$ l +TAB,我会得到以下上述捕获:

早期建议

我想要得到的是当我在 TAB 上第二次输入时获得最新的文件建议,而不是在我第二次输入时立即获得。

更新2:我已经接近最终想要的行为了。我设置 :

zstyle ':completion:*:complete:(ls|cd|cp|mv|vim|cat|more|tail|head|open):*' file-sort date reverse

bindkey '^\t' reverse-menu-complete
bindkey '^[[Z' menu-complete
Run Code Online (Sandbox Code Playgroud)

如果我执行第一个操作l + TAB,我会首先自动添加正确的最新文件,第二次TAB推送建议从最新到最旧的文件(反向排序)。

它缺少的只是一个修改,l + TAB必须不添加建议文件,只需列出从最旧到最新的所有文件,一秒钟后TAB,首先建议从较旧的最新文件^[[Z' menu-complete

Ela*_*dio 1

要对任何命令进行文件/目录补全(除非用不同的补全覆盖),按修改日期(从最近到旧)排序,作为详细列表 -

  1. 将以下内容添加到~/.zshrc
autoload -Uz compinit
compinit
zmodload zsh/complist

zstyle ':completion:*' file-list all
zstyle ':completion:*' file-sort date
Run Code Online (Sandbox Code Playgroud)
  1. 重新加载 zsh 配置文件 -source ~/.zshrc在现有终端会话上运行或打开新终端会话以使更改生效

  2. 触发详细列表完成 - 在点击之前-在命令之后TAB点击空格。例如l<space><TAB>

  3. 继续点击TAB选择