Problem
Interactive filterを使っていたりするとコマンドよりも結果をhistoryに残した方が便利なケースが度々あります。
# 例:fzfで選択したファイルをvimで開くalias v='_vim_fzf'
_vim_fzf (){local file
file=$(fzf +m -q"$1")&& vim "$file"}
上記の場合、historyを遡っても選んだファイルは出てきません。
Solution
Bashではhistory -s
を使います。
_vim_fzf (){local file
file=$(fzf +m -q"$1")&&history-s"vim $file"&& vim "$file"}
このように書き直すと、v
コマンドの代わりにvim [選んだファイル]
が履歴に残るのでCtrl-RやCtrl-Pでファイルを再び開くことが可能になります。
Further Work (Zsh)
Zshではprint -s
が相当するそうです。
$ print -s"alternative command"$ history# ...# 99 print -s "alternative command"# 100 alternative command
問題は上のようにprint
コマンド自体も保存されてしまうことです。もっと良い方法があれば教えてくださいmm