Короткий відповідь увімкнено (savehist-mode)
у ваших .emacs. Це дозволить зберегти всі кільця історії мінібуферів за замовчуванням, що включає, shell-command-history
що використовується M-!
/ (shell-command)
.
Хоча я в цьому, я думаю, я також поясню, як завантажувати / зберігати історії команд з shell-mode
підказок та інших режимів, які випливають із цього comint-mode
.
Примітка: це для мого налаштування з bash та OSX, але кишки цього повинні працювати в більшості середовищ.
Спочатку потрібно скопіювати історію оболонки bash у середовище вашого emacs. За замовчуванням це зберігається у змінній під назвою "HISTFILE". Я роблю це з таким (exec-path-from-shell)
пакетом:
(exec-path-from-shell-initialize)
(exec-path-from-shell-copy-env "HISTFILE")
Тоді вам потрібно зателефонувати (turn-on-comint-history)
у відповідному режимі гачками, тобто
(defun turn-on-comint-history (history-file)
(setq comint-input-ring-file-name history-file)
(comint-read-input-ring 'silent))
(add-hook 'shell-mode-hook
(lambda ()
(turn-on-comint-history (getenv "HISTFILE"))))
(add-hook 'inf-ruby-mode-hook
(lambda ()
(turn-on-comint-history ".pry_history")))
Для інтерактивних режимів рубіну ви бачите, що я використовую локальний .pry_history
файл на основі проекту.
Тоді вам потрібно переконатися, що ви зберігаєте файли історії коментувань при знищенні буферів та emacs:
(add-hook 'kill-buffer-hook #'comint-write-input-ring)
(add-hook 'kill-emacs-hook
(lambda ()
(--each (buffer-list)
(with-current-buffer it (comint-write-input-ring)))))
Примітка. Я використовую dash.el
для простого (--each)
форматування.
Це зробить історію команд оболонки minibuffer стійкою, а також історію команд bash prompt між emacs та іншими умовами.
(savehist-mode)
ввімкнули?