2013-02-16 7 views
5

Gibt es in Emacs einen Befehl zum Öffnen der zuletzt geöffneten Datei? Wie eine visit-most-recent-file?Gibt es in Emacs einen Befehl, die zuletzt geöffnete Datei zu besuchen?

Beachten Sie, dass ich keine LISTE der letzten Dateien anzeigen und dann eine auswählen möchte. Ich möchte den zuletzt geöffneten automatisch besuchen.

Es wäre toll, eine kürzlich geöffnete Datei (die nicht mehr in einem aktuellen Puffer ist) mit einem einzigen Tastendruck zu besuchen. Und dann in der Lage sein, die nächste zuletzt geöffnete Datei zu besuchen, indem der Tastaturanschlag erneut aufgerufen wird, und so weiter.

So dass durch das Drücken dieser Tastenkombination viermal (z. B. A-UP), ich automatisch die ersten vier Dateien auf meiner Liste der letzten Dateien öffnen konnte.

Ich kann Art von dies bereits tun, indem Sie durch die letzten Dateien durch Drücken von C-x C-f UP RET, aber es wäre cool, es in einem einzigen Tastendruck (z. B. A-UP) zu tun.

Antwort

3

Gebäude aus Antwort von pokita ist,

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

Ich habe das nicht sehr viel getestet.

+0

Heilige Kuh, das funktioniert! Vielen Dank! – incandescentman

2

Sie können dies tun, indem Sie das recentf Paket mit:

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

Sie werden wahrscheinlich mit dem Problem konfrontiert, dass es Dateien in der „letzten“ -Liste, die Sie nicht interessiert sind (temporäre Sachen, die gerettet wurde auf Emacs verlassen). Verwenden Sie die Variable recentf-exclude, um diese Dateien von der Liste der zuletzt geöffneten Dateien auszuschließen.

+0

Danke! Diese Art von Arbeiten, außer dass wir eine Möglichkeit brauchen, um die Liste der letzten f zurückzusetzen. Wenn ich drücke, wird meine letzte Datei erfolgreich geöffnet. Wenn ich dann die Änderungen vornehmen ich brauche, um die Datei zu speichern, den Puffer zu töten, und drücken Sie dann später, wenn ich es brauche wieder zu öffnen, wird es meine nächste neueste Datei, statt erneutes Öffnen der Datei, die ich hatte gearbeitet obwohl DIESE DATEI jetzt die neueste ist. Lösung? – incandescentman

+1

Sie tun könnten (add-hook ‚Kill-Puffer-Haken (Lambda() (setq my-recentf-Zähler 0))), aber ich habe das Gefühl, dass Sie bald andere Probleme damit sehen werden, auch. Ich benutze nur recentf-interactive-complete und bin damit zufrieden. Alternativ nehmen, da Sie ido verwenden, einen Blick auf die IDO-virtual-Puffer Variable in neueren Emacsen. – pokita