5

在 Emacs 中,是否有打开最近打开的文件的命令?像一个visit-most-recent-file

请注意,我不想查看最近文件的列表,然后选择一个。我想自动访问最近打开的一个。

用一次击键访问最近打开的文件(不再在当前缓冲区中)会很棒。然后能够通过再次调用击键来访问下一个最近打开的文件,依此类推。

因此,通过按该键四次(例如A-UP),我可以自动打开最近文件列表中的前四个文件。

我已经可以通过浏览最近的文件,按C-x C-f UP RET来做到这一点,但是在一次击键中完成它会很酷(例如A-UP)。

4

2 回答 2

3

以pokita的答案为基础,

(defun visit-most-recent-file ()
  "Visits the most recently open file in `recentf-list' that is not already being visited."
  (interactive)
  (let ((buffer-file-name-list (mapcar 'buffer-file-name (buffer-list)))
        most-recent-filename)
    (dolist (filename recentf-list)
      (unless (memq filename buffer-file-name-list)
        (setq most-recent-filename filename)
        (return)))
    (find-file most-recent-filename)))

我没有对此进行太多测试。

于 2013-02-18T22:45:35.173 回答
2

您可以通过使用 recentf 包来做到这一点:

(require 'recentf)
(defvar my-recentf-counter 0)
(global-set-key (kbd "<M-up>")
        (lambda ()
          (interactive)
          (setq my-recentf-counter (1+ my-recentf-counter))
          (recentf-open-most-recent-file my-recentf-counter)))

您可能会遇到这样的问题:“最近”列表中有您不感兴趣的文件(退出 Emacs 时保存的临时文件)。使用 recentf-exclude 变量从最近打开的文件列表中排除这些文件。

于 2013-02-16T21:45:33.007 回答