空enterでlsを実行するプラグインを作った

{{ page.title }}

作った。
Omochice/emptyls-fish - GitHub

顛末

空 Enter で ls が実行されると便利

みたいな話をよく聞くので fish でも同じようなことができないかと思って調べたら zsh にはプラグインとしてあるみたい。

Qiita にfishshell で Enter 押したときに ls と git status を表示する - Qiitaがある。
この記事では <c-j> にバインドしているが、コマンドの実行のイベントで空なら分岐の方式にしたかったので調べてみた。

どうやら空のコマンドを実行したときには --on-event <pre|post>exec が発行されないように新しいバージョンで変わったらしい。
fish_preexec is no longer triggered on empty commands, no way to restore old behavior #8020

個人的に Enter にバインドするものは今後増える可能性があると思ってるのでバインドしたくはなかった。

function fish_user_key_bindings
    bind \r emptyls
end

ここで地味に詰まった。
最初は bind \r ではなくて bind -k enter にしていたが、enterには割当がない みたいなエラーが出た。