【问题标题】:In Emacs, is there a command to visit the most recently opened file?在 Emacs 中,是否有访问最近打开的文件的命令?
【发布时间】:2013-02-16 21:20:34
【问题描述】:

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

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

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

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

我已经可以通过浏览最近的文件、按C-x C-f UP RET 来实现这一点,但只需按一下键(例如A-UP)就可以了。

【问题讨论】:

    标签: emacs ido-mode recent-file-list


    【解决方案1】:

    基于 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】:

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

      【讨论】:

      • 谢谢!那种工作除了我们需要一种方法来重置最近的 f 列表。即,如果我按 ,它会成功打开我最近的文件。如果我然后进行我需要的更改,保存文件,终止缓冲区,然后当我需要再次打开它时按 ,它会打开我的下一个最近的文件,而不是重新打开我的文件即使那个文件现在是最新的,我也一直在努力。解决方案?
      • 你可以做到 (add-hook 'kill-buffer-hook (lambda () (setq my-recentf-counter 0))),但我有预感你很快就会看到其他问题与那个,太。我只是在使用recentf-interactive-complete,对此我很满意。或者,由于您使用的是 ido,请查看较新的 Emacsen 中的 ido-virtual-buffers 变量。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      • 1970-01-01
      • 2017-11-27
      • 1970-01-01
      • 2010-09-27
      相关资源
      最近更新 更多