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)
l”,当我触摸 TAB(自动)完成时,我希望将最近修改的文件作为我执行“ l” + TAB 完成的提示附近的建议。。作为示例,下图是输入简单的“ l”命令时的情况(参见上面的别名):
主要目标:这篇文章最重要的目标:如果我输入“l+TAB+TAB”,我希望最近的文件/目录首先作为建议出现:就我而言,此命令之后的第一个建议是filename2,在第二个“ TAB”建议dir_1和第三个建议之后dir_8,依此类推(参见简单命令“”的顺序l)。
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。
要对任何命令进行文件/目录补全(除非用不同的补全覆盖),按修改日期(从最近到旧)排序,作为详细列表 -
~/.zshrc:autoload -Uz compinit
compinit
zmodload zsh/complist
zstyle ':completion:*' file-list all
zstyle ':completion:*' file-sort date
Run Code Online (Sandbox Code Playgroud)
重新加载 zsh 配置文件 -source ~/.zshrc在现有终端会话上运行或打开新终端会话以使更改生效
触发详细列表完成 - 在点击之前-在命令之后TAB点击空格。例如l<space><TAB>。
继续点击TAB选择