如何从 emacs 保存 shell 历史记录并在终端中使用它?

如何从 emacs 保存 shell 历史记录并在终端中使用它?

我几乎所有事情都用 emacs,但是当我运行 shellM-x shell然后退出 emacs 时,历史记录不会被保存,我曾尝试过(savehist-mode 1)这个方法但似乎不起作用,有没有办法保存在 emacs 中使用的命令的历史记录并在我在 emacs 之外使用 shell 时使用它们?

答案1

savehist-mode不适用于此处;您遇到此问题的原因是,默认情况下,Bash 仅在其内存历史缓冲区已满或退出时才会写入历史文件,并且只有在干净退出时才会写入后者 - 也就是说,被终止而不是退出的 Bash 进程永远不会将最近的命令写入历史文件。

要解决该问题,请确保在终止 shell 缓冲区之前,通过执行logoutexitC-d在提示符下键入内容,干净地完成 shell 会话;这将使 Bash 有机会在退出之前写入历史文件。

另请参阅Bash 常见问题解答关于历史文件管理,关于如何让 Bash 在执行每个命令后立即将其写入历史记录的一些想法;一旦你完成了这项工作,你就不再需要担心在杀死它​​们的缓冲区之前退出你的 shell,而是可以C-x k随心所欲地去做。

相关内容