zsh履歴から最後のコマンド(またはボーナス用の現在のコマンド)を削除する方法

zsh履歴から最後のコマンド(またはボーナス用の現在のコマンド)を削除する方法

もちろんこれを行う非常に簡単で賢明な方法がありますが、zshellの記録はfcのエイリアスのようです。履歴から行を削除する方法は?

これを行う方法についてのアドバイスはありますか?マイユースケースは、履歴から最後に実行されたコマンドを削除してオートコンプリートを停止することです(主に誤った内容を入力して表示され続ける場合)。

次のようにして最後のコマンドを発行できることを知っています。

history | tail -n 1しかし、History -dは機能しないため、zshの正しいドキュメントが見つかりません。

ベストアンサー1

Zshは真の履歴編集機能を提供しません。コマンド履歴はデフォルトで読み取り専用です。あなたができることは、それを卸売に置き換えることだけです。

コマンド履歴の編集:

  1. ファイルに保存します。fc -W
  2. ファイルの編集
  3. ファイルから履歴を読み込む:fc -R

設定でファイル名を選択できますHISTFILE

テストされていないコード:

remove_last_history_entry () {
  setopt local_options extended_history no_hist_save_no_dups err_return
  
  local HISTFILE=~/.zsh_history_tmp_$$ SAVEHIST=$HISTSIZE
  fc -W
  ed -s $HISTFILE <<EOF >/dev/null
d
w
q
EOF
  fc -R
}

おすすめ記事