Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@harvath

Shellのコマンド履歴に任意のコマンドを残したい

More than 1 year has passed since last update.

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

0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
harvath
http://stackoverflow.com/users/3891638/cozyconemotel

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?