2012-07-30 48 views
13

我有一個git的自定義別名,我用git df(它基本上是git diff的快捷鍵)。使zsh autocorrect與定製git別名工作

然而,Git的zsh的自動更正,每次我在一個包含db目錄的目錄使用git df,我得到這個:

% ls 
app/ config/ db/ lib/ log/ spec/ 

% git alias | grep "df" 
df = diff 

% git df 
zsh: correct 'df' to 'db' [nyae]? 

有沒有一種方法,我可以做的zsh知道我的git的別名,因此它在嘗試自動更正我的命令時將它們考慮在內?我希望它能檢測到git df存在,而不是建議我git db

我不想創建zsh別名(例如,alias gdf="git diff")或使用alias git="nocorrect git"

感謝您的幫助!

+1

我認爲這是比較容易徹底禁用自動更正:我還沒有見過它糾正了其他接檔名的東西。像'srun command' /'cave resolve package'這樣的'.command' /'.package'配置目錄真的很噁心。像這樣的命令太多,爲每個命令添加一個別名。 – ZyX 2012-07-30 17:33:53

+1

起初我認爲完全禁用它是一個瘋狂的想法,但後來我意識到autocorrect與autocompletion不一樣。我喜歡autocompletion,但最近autocorrect一直在我的方式。我用'unsetopt correct_all'禁用了它,我們將看看它是如何發生的。感謝您的建議! – remi 2012-07-30 21:05:37

回答

3

您可以通過運行命令hash -rfrehash來強制zsh重建自動更正緩存。當zsh被自動修正爲錯誤的東西時,這解決了我的問題。

+1

這是不同的:它命令散列包含「命令名稱」 - 「二進制路徑」關係以及「命名目錄」 - 「實際路徑」。在這種情況下,您的命令不會修復自動更正,它只能修復命令的自動更正。 – ZyX 2012-07-31 04:28:58

3

Git有一個自動更正功能:

git config --global help.autocorrect 2 

我認爲,如果你想實現的zsh此功能,您將不得不改變git的完成:

git config --global help.autocorrect 

會自動更正之前等待2秒直接起作用。

1

有時,我發現自動更正有點煩人。所以我在我的〜/ .zshrc中做,

DISABLE_CORRECTION="true" 

這將禁用自動更正功能。否則,你可以做

alias git="nocorrect git" 

但你似乎不願做那