仙豆のレシピ

ちょっとしたことでも書いていく姿勢で

zshで「!」をaliasしたい

コマンドラインで作業してて、

$ vim very_very_long_name_file.py

みたいなのを何度も打つことになるとシンドイ。なので

$ !v

をよく使ってたけど、!を打つのすらめんどくさい気がしてきたのでもういっそ

$ v

だけで!vと同じ動作をしてほしくなった。

じゃあといってzshrcに以下を書いてみたところ、動かなかった。

alias v=!v

シェルのこととか何もわからないけど、見る人が見れば当たり前なんだろうと思う。

とりあえずこれを力ずくで実現するためにzshrcに以下を書いたのでメモ。

alias v='$(fc -ln 1 | grep "^v." | tail -1 | sed -e "s|~|$HOME|")'

もっとスマートな方法がある気がするので知りたい。

一度きっちり勉強しなきゃならんなぁという感じ。

簡単な解説↓

fc -ln 1 : コマンドヒストリーを表示

grep "^v." : vから始まって2文字以上のコマンド(.を入れないと二回目からvがヒットしてしまう)

tail -1 : 該当するうち一番新しいもの

sed -e "s|~|$HOME|" : ~があるとうまく動かなかったので置換。仕組みを理解していない