20
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

zshで略語を展開する(vimのiabみたいなの)プラグイン作った

Last updated at Posted at 2016-11-24

はじめに

以下の記事で、zshのグローバルエイリアス(alias -g)の代わりに、vimのiabっぽい略語展開をする方法が紹介されています。

実際設定してみてむちゃくちゃ便利だったんですが(どう便利なのかは上の紹介を読んでみてください)、以下の点がちょっと不満になってしまいました。

  • Spaceを押さずにEnterを押しちゃった場合に、略語が展開されない。(まぁ、これはalias -gで同じ定義をしたらよいのですが。)
  • 展開する文字列を実行時に決定したい。(alias -g B="\$(git symbolic-ref --short HEAD)"って定義すると、Bが現在のブランチ名に展開される、みたいなことがしたかった。)

そんなわけで……

zsh-abbrev-alias ってプラグインを作ってみました。

インストールするとabbrev-aliasというコマンド(というかzsh function)が追加されます。このコマンドを使ってエイリアスを登録すると、略語の展開対象として登録しつつ、aliasコマンドでエイリアスの定義も行います。

使い方

インストール

.zshrc
zplug "momo-lab/zsh-abbrev-alias"

私はzplugを使っているので、それでしか動作確認してません。ごめんなさい。
プラグインマネージャを使っていれば、同じように設定したら動くと思います。たぶん。きっと。

略語の登録

ほぼ、aliasと同じように使えます。

.zshrc
abbrev-alias -g G="| grep"  # グローバルエイリアスの例題でよくあるやつ

とするとGというエイリアス&略語が登録されます。

展開

$ ps aux G

としたところで、Spaceを押すと、Gが展開されて以下のようになります。

$ ps aux | grep

便利!

展開をしたくない場合は、Ctrl+xしてからSpaceを押してください。

また、aliasも同時に定義しているので、エイリアスを入力した後そのままEnterを押しても大丈夫です。

3種類のタイプ

zsh-abbrev-aliasには3種類のタイプ(-g-c-f)があります。ここではそのそれぞれを紹介します。

-g グローバルエイリアス

alias -g name=valueのように動きます。エイリアスを入力してSpaceを押すと展開を行います。通常のalias -gの代わりに使うとよいです。

例は上述しているので省略します。

-c コマンドエイリアス

alias name=valueのように動きます。コマンドの先頭でこのエイリアスを入力してSpaceを押した場合にのみ展開を行います。通常のaliasの代わりに使うとよいです。

使用例
$ abbrev-alias gc="git commit -v"
$ gc                   # ←ここでSpaceキーを押すと…
  ↓
$ git commit -v        # ←このように展開されるので、オプションを消したりできます。

$  gc                  # ←このように、先頭にスペースなどの文字がある場合は展開しません。

-f ファンクションエイリアス

alias -g name=\$(value)のように動きます。展開を行う際に、valueの実行結果に置き換えてくれます。

使用例
$ abbrev-alias -f B="git symbolic-ref --short HEAD"
$ git symbolic-ref --short HEAD
master
$ git push origin B         # ←ここでスペースキーを押すと$ git push origin master    # ←コマンドの実行結果が展開されます。

alias -g B="\$(git symbolic-ref --short HEAD)"というエイリアスも定義しているので、Spaceを押さずにEnterを押しても大丈夫です。

終わりに

もう、aliasは全部、abbrev-aliasに置換してもいいんじゃないかな、かな。

…とか言いつつ、今日一日でえいやって作ったものなので、バグやらなにやらありそうです。何かありましたら、PRでもissueでもここでのコメントでなんでもいいのでフィードバックいただけると嬉しいです。

20
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?