はじめに
cdしたあとlsする関数を作ろうかと思ったけど、
enhancdというものを使い倒してるのでそこらへんとの兼ね合いが面倒くさそうで、
なにかいい方法がないかなと思ったらあった。
最終的な形
chpwd() {
if [[ $(pwd) != $HOME ]]; then;
ls
fi
}
解説
こんかいのキモとなるのはchpwd()こいつ。
我らがzshにはhook関数なるものが実装されている。
こいつらはプロンプトを表示する直前だったりEnterを押してコマンドを実行する直前だったり、
様々な条件に応じて発火するものが備わっている。
詳細な話はこの記事がとてもいい感じに纏まっているのでそっちに丸投げ。
zshでhook関数を登録する - Qiita
そして、今回はそのhook関数の中のカレントディレクトリが変更されたときに発火するchpwdなるものを用いる。
chpwd() {
ls
}
zshrc内でchmodにこんな感じでlsをする処理を書いてあげると、カレントディレクトリを変更したときに自動でlsしてくれるようになる。
ただ、これだとただcdしたときにホームディレクトリの中身がlsでウワーってなるので、
chpwd() {
if [[ $(pwd) != $HOME ]]; then;
ls
fi
}
ifで、現在のディレクトリ(pwd)が ホームディレクトリ$HOMEと同じじゃなかったらls。と制御してあげる。
\
蛇足
cdした際にいちいち出てくるの煩わしいかなーって思ったけど、大きなディレクトリの移動はenhancdでゴリっと移動できるし、cd hogehogeで細かく移動するときはディレクトリ見ながら移動したいのでlsの手間が省けて良さげ。