2014-06-22 59 views
1

我運行osx並安裝了oh-my-zsh,如果這是相關的。無論如何,如果我輸入「andr」之類的東西並點擊tab來完成它,它會自動完成到_xrandr而不是什麼都不做(android不在我的路徑中)。我不確定爲什麼。「安德爾」選項卡完成到「_xrandr」而不是android或什麼都沒有

任何想法爲什麼可能是這種情況?

+1

執行'android'命令是否在你的路徑? – Guillaume

+0

這不是,但應該是相關的?難道它不應該做任何事情嗎? (剛剛解決了問題標題以反映這一點) – randomafk

+0

因此,如果它不在你的路徑中,'zsh'無法完成它!你可以用'export PATH = $ PATH:編輯你的'.zshrc'來添加命令' – Guillaume

回答

2

oh-my-zsh設置完成後,如果在右側沒有輸入詞的左側,則查找完成。

這發生在~/.oh-my-zsh/lib/completion.zsh

## case-insensitive (all),partial-word and then substring completion 
if [ "x$CASE_SENSITIVE" = "xtrue" ]; then 
    zstyle ':completion:*' matcher-list 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' 
    unset CASE_SENSITIVE 
else 
    zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' 
fi 

的重要組成部分在這裏是'l:|=* r:|=*'。如果你不喜歡這種行爲,你只需要從zstyle ':completion:*' matcher-list中刪除。要做到這一點,最好的方法是創建~/.oh-my-zsh/custom與擴展.zsh一個文件,例如own-completion.zsh

zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 

這是不區分大小寫完成,如果你不想這兩種,也刪除'm:{a-zA-Z}={A-Za-z}'

您可以直接在~/.oh-my-zsh/lib/completion.zsh中更改它,但一旦更新oh-my-zsh可能會被覆蓋。

相關問題