はじめに
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
の手間が省けて良さげ。