2013-02-16 85 views
2

有一個precmd()做了很多工作,比如檢查VCS信息,我想在導航緩慢安裝的網絡驅動器時禁用它。重命名自定義函數

我想出了以下幾點,我可以說slow之前更改爲慢速驅動器和fast將其更改回來,我想知道是否有更容易?

precmd_slow() { 
    not_much 
} 
precmd_fast() { 
    precmd_slow 
    somemore1 
    somemore2 
} 

precmd() { 
    precmd_fast 
} 

slow() { 
    precmd() { 
     precmd_slow 
    } 
} 

fast() { 
    precmd() { 
     precmd_fast 
    } 
} 
+0

如果你瀏覽相同的慢速驅動器很多,[''特定於目錄的zshrc'](http://michael-prokop.at/blog/2011/10/08/rocking-zsh-directory- specific-shell-profiles-screencast /)可能有助於自動化該過程,儘管鍵入綁定功能可能非常簡單。只是一個想法。 – simont 2013-02-19 11:14:36

回答

2

除了precmd功能,也有稱爲precmd包含的功能的列表的同時呼叫的陣列。你可以自己操縱它,但zshcontrib有一個功能add-zsh-hook來簡化事宜。

# precmd_slow and precmd_fast defined as before 

autoload add-zsh-hook 
add-zsh-hook precmd precmd_fast 

fast() { 
    add-zsh-hook -d precmd precmd_slow 
    add-zsh-hook precmd precmd_fast 
} 

slow() { 
    add-zsh-hook -d precmd precmd_fast 
    add-zsh-hook precmd precmd_slow 
}