संक्षिप्त उत्तर (savehist-mode)
आपके .emacs में सक्षम है। यह सभी मिनीबफ़र इतिहास के छल्ले को डिफ़ॉल्ट रूप से बचाएगा, जिसमें शामिल है shell-command-history
जो M-!
/ द्वारा उपयोग किया जाता है (shell-command)
।
जब मैं इस पर हूँ, मैं यह भी बताता हूँ कि कमांड हिस्टरी को shell-mode
प्रॉम्प्ट और अन्य मोड्स से लोड / सेव कैसे किया जाए comint-mode
।
नोट: यह बैश और 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
एक प्रति-प्रोजेक्ट के आधार पर एक स्थानीय फ़ाइल का उपयोग कर रहा हूं ।
फिर आपको यह सुनिश्चित करने की आवश्यकता है कि आप बफ़र और ईमैक को मारते समय अपनी कॉमिंट हिस्ट्री फ़ाइलों को सहेजते हैं:
(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)
फॉर्मेटिंग के लिए उपयोग कर रहा हूं ।
यह आपके मिनीबफ़र शेल कमांड इतिहास को निरंतर बनाए रखने के साथ-साथ emacs और अन्य शब्दों के बीच आपके बैश प्रॉम्प्ट कमांड इतिहास को बनाए रखेगा।
(savehist-mode)
सक्षम किया है?