ZSH:每张cd后自动运行ls

时间:2010-10-18 22:50:40

标签: zsh

所以我现在已经让ZSH做了所有这些很酷的东西,但真正令人敬畏的是,如果我能在每次调用'cd'之后隐式运行'ls -a'。我想这必须放在.zlogin文件或.aliases文件中,我只是不确定最佳解决方案是什么。思考?参考资料?

3 个答案:

答案 0 :(得分:55)

将以下内容放入.zshrc:

function cd() {
    emulate -LR zsh
    builtin cd $@ &&
    ls -a
}

修改 在查看文档(zshbuiltinscd内置或hook functions的说明)之后,我找到了一种更好的方法:它使用chpwd函数:

function chpwd() {
    emulate -L zsh
    ls -a
}

或使用chpwd_functions数组:

function list_all() {
    emulate -L zsh
    ls -a
}
chpwd_functions=(${chpwd_functions[@]} "list_all")

答案 1 :(得分:4)

短版。

autoload -U add-zsh-hook
add-zsh-hook -Uz chpwd (){ ls -a; }

答案 2 :(得分:0)

我不知道为什么会这样,或者情况是否更好,但是我发现这也适用于.zshrc。似乎比大多数答案都短,尽管可能缺少我不明白的内容。

chpwd() ls -a