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