
我遇到了 ZSH 自動完成的問題,並且找不到正確的按鍵來解決它。
例如,對於像這樣的文件
$ ls
Accelion, titi toto tata
我想寫:
$ ls cc<TAB>
並且得到_不_completion,而不是Accelion
.
以下是目前設定的選項:
$ set -o | grep " on"
alwaystoend on
autocd on
autonamedirs on
autopushd on
nobeep on
cdablevars on
extendedhistory on
noflowcontrol on
nohistbeep on
histexpiredupsfirst on
histignoredups on
histignorespace on
histverify on
incappendhistory on
interactive on
interactivecomments on
nolistambiguous on
nolistbeep on
longlistjobs on
nonomatch on
promptsubst on
pushdignoredups on
shinstdin on
zle
如果您需要更多詳細信息,例如選項(以及如何轉儲它!),請告訴我
編輯:桀騁4.3.17(x86_64-redhat-linux-gnu)
答案1
你沒有提到zsh
你用的是什麼版本。我假設版本 4。
您的zsh
shell 首先執行匹配,而不是您可能習慣的真正完成。可以透過對完成器進行排序和可選的自訂來自訂此行為。您可以在以下位置找到有關如何執行此操作的更多信息本指南。
您看到的行為可能是不區分大小寫的匹配:
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
在不深入研究指南的情況下修復此行為的最快方法是找到並註解掉上面的類似行,或者運行autoload -Uz compinstall
然後compinstall
。這將引導您完成基本精靈來自訂zsh
行為方式。它會問您一些問題,然後創建一個簡單的~/.zshrc
問題,您可以在對選項更加熟悉後進行自訂。先把你的~/.zshrc
行為複製下來,這樣如果你想保留某些行為,你就有一個參考。