function zshaddhistory() {
emulate -L zsh
if [[ $1 != *"production"* ]] ; then
print -sr -- "${1%%$'\n'}"
fc -p
else
return 1
fi
}
Поместите приведенное выше в файл, который будет получен при запуске интерактивной оболочки (до .zshrc
или в файл, полученный из .zshrc
, как я).
Альтернативная форма (неявное дополнение к истории):
function zshaddhistory() {
emulate -L zsh
if [[ $1 = *"production"* ]] ; then
return 1
fi
}
. Примечание:
print -sr -- "${1%%$'\n'}"
явно добавляет элемент в историю. Но то же самое неявно делает zsh, если zshaddhistory
возвращается с нулевым кодом выхода, поэтому без fc -p
и с setopt nohistignoredups nohistignorealldups
(который является состоянием по умолчанию) вы увидите ненужные дубликаты в истории.
emulate -L zsh
здесь для того, чтобы убедиться, что настройки эмуляции не вступают в действие, и изменить интерпретацию тела функции. Я помещаю эту строку в начало каждой функции, которую я определяю в конфигурации zsh.