2013-02-16 69 views
5

在Emacs中,是否有打開最近打開的文件的命令?像visit-most-recent-file在Emacs中,是否有命令訪問最近打開的文件?

請注意,我不想查看最近文件的列表,然後選擇一個。我想自動訪問最近打開的一個。

用一個按鍵就可以訪問最近打開的文件(不再處於當前緩衝區),這將非常棒。然後可以通過再次調用擊鍵來訪問下一個最近打開的文件,依此類推。

這樣,通過按下該按鍵四次(例如A-UP),我可以自動打開最近文件列表中的前四個文件。

我可以通過瀏覽最近的文件,通過按C-x C-f UP RET來做到這一點,但單鍵擊(如A-UP)會很酷。

(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))) 

你可能會面臨有在「最近」列表中的文件,你不感興趣,這是保存在(臨時東西問題:

回答

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

我沒有測試過這種非常多。

+0

聖牛,這工作!謝謝! – incandescentman 2013-02-19 19:33:19

2

您可以通過使用recentf包做退出Emacs)。使用recentf-exclude變量從最近打開的文件列表中排除這些文件。

+0

謝謝!這種工作除了我們需要一種方法來重置最近的f列表。即如果我按,它會成功打開我最近的文件。如果我然後進行所需的更改,請保存該文件,殺死緩衝區,然後在需要再次打開它時按,它會打開我的下一個最新文件,而不是重新打開我一直在處理的文件即使這個文件現在是最新的。解? – incandescentman 2013-02-17 04:29:12

+1

你可以這樣做(add-hook'kill-buffer-hook(lambda()(setq my-recentf-counter 0))),但我有一個預感,你很快也會看到其他問題。我只是使用recentf-interactive-complete並對此感到滿意。或者,由於您使用的是ido,請查看新Emacsen中的ido-virtual-buffers變量。 – pokita 2013-02-17 10:16:40

相關問題