zshでは現在のコマンドラインを任意のテキストエディタで編集できるので紹介する。
設定
次の設定を.zshrcに書いておく。
autoload -Uz edit-command-line
zle -N edit-command-line
bindkey '^xe' edit-command-line
最後の^xe
のところは僕が使っている例で、好きなように変えてOK。
使い方
さっきの例の設定の場合、^xe
(Ctrl+xのあとにCtrlを離してe)でエディタが起動する。起動したエディタで実行したいコマンドを書いて保存、終了、で元のコマンドラインに戻る。後は普通にEnterを押すと実行される。
複数行のコマンドを実行したいときもそのままエディタで書ける。
もちろん、コマンドラインに途中まで入力済みの状態で起動すると、その内容が始めから入った状態でエディタが起動する。編集をキャンセルして元の状態に戻りたいときは、保存せずにエディタを終了する。
起動するエディタは環境変数EDITORで指定したコマンドなので、あらかじめ好きなエディタを設定しておこう。
EDITOR='vim'
# または
EDITOR='emacs -nw'
ちょっと複雑なコマンドを実行するときに、あらかじめテキストファイルにコマンドを書いてそれをシェルに貼り付けて、ということをやってる人もいるかもしれない。そういうときにこの機能を使うと、さっと普段使っているエディタで編集できて便利なので、ぜひ使ってみてください!