代码之家  ›  专栏  ›  技术社区  ›  incandescentman

在Emacs中,是否有访问最近打开的文件的命令?

  •  5
  • incandescentman  · 技术社区  · 11 年前

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

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

    只需一次按键就可以访问最近打开的文件(该文件已不在当前缓冲区中),这将是一件很棒的事情。然后可以通过再次调用击键来访问下一个最近打开的文件,以此类推。

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

    我已经可以通过浏览最近的文件,按 C-x C-f UP RET ,但只需一次按键(例如。 A向上 ).

    2 回复  |  直到 11 年前
        1
  •  3
  •   jpkotta    11 年前

    基于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)))
    

    我还没怎么测试过。

        2
  •  2
  •   pokita    11 年前

    您可以使用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变量将这些文件从最近打开的文件列表中排除。