To get an empty history, temporarily set [`HISTSIZE`](http://zsh.sourceforge.net/Doc/Release/Parameters.html#index-HISTSIZE) to zero.
```
function erase_history { local HISTSIZE=0; }
erase_history
```
If you want to erase the new history from this shell instance but keep the old history that was loaded initially, empty the history as above then reload the saved history `fc -R` afterwards.
If you don't want the `erase_history` call to be recorded in the history, you can filter it out in the [`zshaddhistory` hook](http://zsh.sourceforge.net/Doc/Release/Functions.html#index-zshaddhistory).
```
function zshaddhistory_erase_history {
[[ $1 != [[:space:]]#erase_history[[:space:]]# ]]
}
zshaddhistory_functions+=(zshaddhistory_erase_history)
```
----
Deleting one specific history element (<code>history -d <em>NUM</em></code> in bash) is another matter. I don't think there's a way other than:
1. Save the history: `fc -AI` to append to the history file, or `fc -WI` to overwrite the history file, depending on your history sharing preferences.
2. Edit the history file (`$HISTFILE`).
3. Reload the history file: `fc -R`.