簡體   English   中英

zsh 問題:在提示符附近有最近的文件和目錄,並建議最近的文件或目錄

[英]zsh issue : have the most recents files and directories near to the prompt and suggested most recent files or directories

在 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"

問題是當我在實際上是別名的“l”之后按 TAB 時:

alias l='grc -es --colour=auto ls --color -Gh -C -lrt'

grc是一個為文件着色的工具。

事實上,我沒有將建議的最近修改或創建的文件或目錄作為第一個結果。

在按 TAB 鍵這些最近的(修改或創建)文件或目錄后,我可以在zsh completion中添加哪個選項以獲得第一個結果?

應用的第一個命令是“ l ”,它對應於別名:

alias l='grc -es --colour=auto ls --color -Gh -C -lrt'
  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:我幾乎找到了在"l" alias之后typing twice on TAB key的解決方案,該別名可以被吸收為ls -lrt 這里是 peudo 魔術命令:

bindkey '\t' reverse-menu-complete

但問題是,使用此選項時,當我第一次按下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

如果我執行第一個l + TAB ,我會首先自動添加正確的最新文件,然后第二個TAB推送建議從最新到最舊的文件(反向排序)。

它只是缺少修改l + TAB必須不添加建議文件,只需列出從最舊到最新的所有文件,然后在第二個TAB之后,首先使用^[[Z' menu-complete建議較舊的最新文件^[[Z' menu-complete

要完成任何命令的文件/目錄(除非被不同的完成覆蓋),按修改日期(從最近到舊)排序,作為詳細列表 -

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

zstyle ':completion:*' file-list all
zstyle ':completion:*' file-sort date
  1. 重新加載 zsh 配置文件 - 在現有終端 session 上運行source ~/.zshrc .zshrc 或打開新終端 session 以使更改生效

  2. 觸發詳細列表完成 - 在點擊TAB之前 - 在命令之后點擊空格 例如l<space><TAB>

  3. 繼續按TAB到 select

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM