Ketika saya menjalankan shell-command
sesi baru, saya tidak memiliki akses ke riwayat perintah dari sesi terakhir. Bagaimana saya bisa mendapatkannya?
shell-command
session
RasmusWL
sumber
sumber
(savehist-mode)
mengaktifkan?M-!
, variabel sejarah yang dibaca / ditulisnya adalahshell-command-history
, yang ditutupi dengan(savehist-mode)
. Jika permintaannya adalah tentang menjaga historicomint-input-ring
buffer shell yang persisten , saya juga bisa membantu, tapi dari cara saya menginterpretasikan pertanyaan, ini akan menyelesaikannya.Jawaban:
Jawaban singkatnya diaktifkan
(savehist-mode)
di .emacs Anda. Ini akan menyimpan semua cincin riwayat minibuffer secara default, yang mencakupshell-command-history
yang digunakan olehM-!
/(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 daricomint-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:Maka Anda perlu memanggil
(turn-on-comint-history)
kait mode yang sesuai, yaituUntuk 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:
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.
sumber
Saya yakin
savehist
dapat mengelola ini, ini adalah pengaturan saya:sumber
Saya pikir Anda dapat saran
shell-command
untuk menyimpan sejarah dan membuat kembali beberapa ikatan kunci terkait, misalnyaM-n/p
, untuk memohon sejarah itu, atau bahkan menulis sendirishell-command
dengan menggunakanread-from-minibuffer
jika Anda mau.sumber