使用shell的一個非常有用的省時功能是您可以使用Ctrl-r搜索命令歷史記錄。 Emacs在其shell模式下具有相同的功能:C-S-r。但是,每次重新啓動emacs時,shell的歷史記錄都會被清除。任何想法如何堅持歷史?Emacs shell:重啓後丟失的命令歷史記錄
2
A
回答
3
一般的答案是:
M-Xcustomize-group
RETsavehist
RET
啓用savehist-mode
和配置希望會話之間持續存在的變量。
但是在這種情況下,我認爲你會發現它是你的shell跟蹤它的命令歷史;不是Emacs。
例如對於bash,命令存儲在$HISTFILE
(默認爲~/.bash_history
),但根據您的設置,來自一個shell的歷史記錄可能會被另一個shell破壞,具體取決於哪一個最後退出。有關bash,請閱讀其手冊頁的HISTORY
部分。
編輯:對於comint-mode
和衍生物(包括shell-mode
)的搜索歷史經由comint-read-input-ring
讀取,其使用comint-input-ring-file-name
您可以在一個模式設置鉤。不過,我建議你實際上將你的HISTFILE
環境變量設置爲~/.zsh_history
,因爲shell模式會自動推遲到那個時間。
對我來說,zsh並沒有這樣做,心裏有點奇怪(假設你是從zsh shell啓動Emacs的?)。如果您使用某種GUI啓動器OTOH,Emacs啓動的環境可能不是您想要的嗎?我無法肯定地說。
如果做不到這一點,文件表明,這應該工作:
(add-hook 'shell-mode-hook 'my-shell-mode-hook)
(defun my-shell-mode-hook()
(setq comint-input-ring-file-name "~/.zsh_history")
(comint-read-input-ring t))
(但使用HISTFILE
會更好)。
n.b.我使用的是Emacs 24.3,鍵盤綁定與您所描述的不同(M-r
以shell模式搜索歷史記錄; C-S-r
對我而言沒有綁定),所以YMMV。我總是在ansi-term
內運行我的shell,所以我不能告訴你這個功能最近是否已經改變。
相關問題
- 1. Shell命令獲取特定命令的歷史記錄
- 2. 重組項目文件夾後丟失了git歷史記錄
- 3. OS X終端歷史丟失命令
- 4. 訪問Emacs中的Node.js命令歷史記錄問題
- 5. Shell歷史命令 - 功能
- 6. 將shell腳本中的命令添加到歷史記錄中?
- 7. 如何清除mongodb shell中的命令歷史記錄
- 8. proc_open for php的命令歷史記錄
- 9. Emacs等效於Vim的命令歷史記錄(用於輸入Meta-x命令)
- 10. 如何在重新啓動後使用(Windows Powershell)GitShell命令歷史記錄?
- 11. zsh - 從shell腳本中獲取命令歷史記錄
- 12. 從bash腳本內更新shell命令歷史記錄
- 13. Firebug命令行歷史記錄
- 14. 檢索命令行歷史記錄
- 15. 我可以從Perl pdl2 shell(如bash中的歷史記錄)中檢索命令的完整歷史記錄嗎?
- 16. 移動分支後TFS丟失合併歷史記錄
- 17. 如何在fzf中啓用每條命令的歷史記錄?
- 18. 從SSH命令行歷史記錄刪除特定歷史
- 19. 如何防止某些命令在shell中執行歷史記錄
- 20. Shell歷史中的可疑命令
- 21. 非交互式shell命令的歷史
- 22. 在Emacs中自動保存shell歷史記錄
- 23. vim8重新使用命令不工作的歷史記錄
- 24. 爲什麼Mercurial的strip命令不能重寫歷史記錄?
- 25. 通過清漆發送重定向後,瀏覽器丟失歷史記錄
- 26. Emacs導航位置歷史記錄
- 27. 在eshell上的irb命令歷史記錄keystroke
- 28. 清除Mongo Shell中的歷史記錄
- 29. 在該單一命令的歷史記錄中執行最後一條命令
- 30. 運行IRB命令歷史記錄中的最後一個X命令?
我得到了迷你緩衝歷史的工作。但是,Emacs仍然缺少shell歷史記錄。我使用zsh,所以我應該設置Emacs指向〜/ .zsh_history?我在哪裏可以做到這一點? – Shuo