Jawaban singkatnya diaktifkan (savehist-mode)
di .emacs Anda. Ini akan menyimpan semua cincin riwayat minibuffer secara default, yang mencakup shell-command-history
yang digunakan oleh M-!
/ (shell-command)
.
Sementara saya melakukannya, saya pikir saya juga akan menjelaskan cara memuat / menyimpan histori perintah dari shell-mode
prompt dan mode lain yang berasal dari comint-mode
.
Catatan: ini untuk pengaturan saya dengan bash dan OSX, tetapi nyali ini harus bekerja di sebagian besar lingkungan.
Pertama, Anda perlu menyalin riwayat bash shell Anda ke lingkungan emacs Anda. Secara default ini disimpan dalam variabel yang disebut "HISTFILE". Saya melakukan ini dengan (exec-path-from-shell)
paket seperti ini:
(exec-path-from-shell-initialize)
(exec-path-from-shell-copy-env "HISTFILE")
Maka Anda perlu memanggil (turn-on-comint-history)
kait mode yang sesuai, yaitu
(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")))
Untuk mode ruby interaktif, Anda dapat melihat saya menggunakan .pry_history
file lokal berdasarkan per proyek.
Maka Anda perlu memastikan Anda menyimpan file histori comint saat membunuh buffer dan 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)))))
Catatan saya gunakan dash.el
untuk (--each)
pemformatan ringkas .
Ini akan membuat riwayat perintah shell minibuffer Anda tetap ada serta riwayat perintah bash prompt Anda antara emacs dan istilah lainnya.
(savehist-mode)
mengaktifkan?