Fish 4のabbrはサブコマンドも展開できるぞ

by
カテゴリ:

Fishのabbr使ってますか? aliasの強化版といった感じで、短縮した入力をスペースやエンターと共に本来のコマンドに展開してくれる機能です。

たとえば

abbr -a g git

とすると、gと入力してスペースを押すとgitに展開されます。

これだけでも強力な機能ですが、2025-02-27にリリースされたFish 4ではさらにサブコマンドの展開もできるようになりました。

abbr --command=git -a a add

とすると、git aと入力してスペースを押すとgit addに展開されます。

2つのabbrを組み合わせると、g aと入力するだけで、git addに展開されます。

素敵。

展開されることで、コマンドの内容がわかるので、ペア作業しているときに、ドライバーの操作がナビに伝わりやすくなりますね。

コマンド履歴にも展開後の内容が残るので、後から検索するのも楽になります。

注意点として、a -> addの展開は、コマンドがgitであれば、サブコマンドでなくても発生してしまいます。たとえば以下。

$ git add a    # 展開前
$ git add add  # 展開後

間違ったファイルをaddしそうで怖いですね。 abbrコマンドでは--functionオプションで展開する文字列を動的に変更できるので、コマンドラインの内容に応じて展開するかどうか決めたほうがいいかも。

このようなケースにかぎらず、abbrの展開を避けたい場合もあるかと思いますが、そのような時はキーワードをバックスラッシュでエスケープしたり、''で囲むといいようです。

これはabbrの短縮表現を展開せずに同名のコマンドを実行するときなどに便利でしょう。

abbr -a ps procs

とあれば、

$ \ps
$ 'ps'

のように使うといいです。

ENJOY