是否有一种简单的方法可以自动保存我在shell模式缓冲区中执行的每个命令?我正在从Emacs的shell缓冲区运行python和lua之类的东西,除了常规的bash命令之外还要保存它们。
默认行为会将历史记录保存在.history或.bash_history中,但不会将输入保存到子进程中。例如,如果我执行以下操作
ls /export/hda3/tmp python a=2+3 import sys sys.exit() ls /export/hda3/tmp
以下内容已保存
#1328903075 ls /export/hda3/tmp #1328903081 python #1328903087 ls /export/hda3/tmp
答案 0 :(得分:2)
命令会自动保存,只需要确保实际退出shell。如果你只是杀死shell缓冲区,那么就不会保存任何命令。
我在emacs出口添加了一个检查,警告我是否有一个打开的shell缓冲区,以便我可以手动退出:
(defun my-check-if-no-shell-buffer-exists ()
(if (not (get-buffer "*shell*"))
t
(message "you have a shell buffer, make sure you exit it manually")
nil))
(add-hook 'kill-emacs-query-functions 'my-check-if-no-shell-buffer-exists)
如果shell缓冲区在杀死缓冲区时自动执行它会更好。我认为这是emacs中的一个错误,它无法做到这一点。
编辑:我注意到我有一个设置可以防止在emacs退出时运行进程警告,这就是我需要上述功能的原因。如果在退出时已经收到有关正在运行的shell的警告,那么您不需要它,您只需要手动退出shell以保存历史记录。