fake-accept - 履歴に登録するだけ

http://journal.mycom.co.jp/column/zsh/003/index.html

もはや漢のスクリプトはコマンド履歴の中にあるものだ。

に触発されて編集中のコマンドの内容(Emacs同様バッファと言う)を履歴に登録するだけのZLE widgetを作ってみた。ソフトウェアのコンパイルなど、試行錯誤の末に正解を発見した場合に、一連のコマンドをまとめたものを履歴に登録したくなる。そうすることで次回同じことをする場合はC-rで履歴検索をすることで自動化された形で取り出すことが可能だ。
history-menuと併用するとテキパキと履歴の内容をバッファに挿入できる。C-M-jかC-M-mかM-RETで改行をバッファに挿入する。
ちなみに名前については「実行するふりをする」意味でfake-acceptだ。コマンドを実行するwidget(RET)の名前はaccept-lineなので、acceptだ。以下を.zshrcに登録しよう。

fake-accept () {
    print -s "$BUFFER"
    print "
[added to history]"
    zle send-break
}
zle -N fake-accept
bindkey "^[m" fake-accept

以下が2行のコマンドを履歴に登録した後に、C-pで履歴を呼出している様子だ。カーソルは[*]の位置にある。

$ echo foo
echo bar
[added to history]

$ echo foo
echo bar[*]