Когда я запускаю shell-command
новый сеанс, у меня нет доступа к истории команд последнего сеанса. Как я могу это иметь?
shell-command
session
RasmusWL
источник
источник
(savehist-mode)
включил?M-!
, переменная истории, из которой она читает / пишет, этоshell-command-history
, которая покрыта(savehist-mode)
. Если запрос касается сохранения постоянной историиcomint-input-ring
буферов в оболочке, я тоже могу помочь с этим, но, насколько я интерпретирую вопрос, это будет сделано.Ответы:
Краткий ответ - это включить
(savehist-mode)
в вашем .emacs. Это сохранит все кольца истории минибуфера по умолчанию, включая те,shell-command-history
которые используютсяM-!
/(shell-command)
.Пока я в этом, думаю, я также объясню, как загружать / сохранять историю команд из
shell-mode
приглашений и других режимов, которые происходят изcomint-mode
.Примечание: это для моей установки с bash и OSX, но внутренности этого должны работать в большинстве сред.
Сначала вам нужно скопировать историю вашей оболочки bash в среду вашего emacs. По умолчанию это хранится в переменной с именем "HISTFILE". Я делаю это с
(exec-path-from-shell)
пакетом так:Тогда вам нужно вызывать
(turn-on-comint-history)
в вашем подходящем режиме хуки, т.е.Для интерактивных рубиновых режимов вы можете видеть, что я использую локальный
.pry_history
файл для каждого проекта.Затем вам нужно убедиться, что вы сохраняете свои файлы истории коминтов при уничтожении буферов и emacs:
Примечание, которое я использую
dash.el
для краткого(--each)
форматирования.Это сделает вашу историю команд оболочки минибуфера постоянной, а также историю команд командной строки bash между emacs и другими терминами.
источник
Я уверен, что
savehist
может справиться с этим, вот мои настройки:источник
Я думаю, вы можете посоветовать
shell-command
сохранить историю и переназначить некоторые связанные привязки клавиш, напримерM-n/p
, для вызова этой истории, или даже написать свою собственнуюshell-command
, используя,read-from-minibuffer
если хотите.источник