2013-02-16 44 views
5

Trong Emacs, có lệnh nào để mở tệp được mở gần đây nhất không? Giống như một visit-most-recent-file?Trong Emacs, có lệnh nào để truy cập tệp được mở gần đây nhất không?

Lưu ý rằng tôi không muốn xem DANH SÁCH các tệp gần đây và sau đó chọn một tệp. Tôi muốn tự động truy cập trang được mở gần đây nhất.

Thật tuyệt vời khi truy cập tệp được mở gần đây (không còn trong bộ đệm hiện tại) bằng một lần nhấn phím. Và sau đó có thể truy cập tệp được mở gần đây nhất tiếp theo bằng cách gọi lại lần nhấn phím, v.v.

Vì vậy, bằng cách nhấn tổ hợp phím đó bốn lần (ví dụ: A-UP), tôi có thể tự động mở bốn tệp hàng đầu trong danh sách tệp gần đây của tôi.

Tôi có thể thực hiện việc này bằng cách duyệt qua các tệp gần đây, bằng cách nhấn C-x C-f UP RET, nhưng sẽ rất tuyệt khi thực hiện điều đó trong một lần nhấn phím (ví dụ: A-UP).

Trả lời

3

Building tắt của câu trả lời pokita của,

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

tôi đã không kiểm tra này rất nhiều.

+0

Bò thánh, hoạt động! Cảm ơn bạn! – incandescentman

2

Bạn có thể làm điều này bằng cách sử dụng các gói 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))) 

Bạn có thể sẽ phải đối mặt với vấn đề rằng có những tập tin trong danh sách "gần đây" mà bạn không quan tâm đến (thứ tạm thời đã được lưu trên thoát Emacs). Sử dụng biến loại trừ loại trừ gần đây để loại trừ các tệp đó khỏi danh sách các tệp đã mở gần đây.

+0

Cảm ơn! Đó là loại công trình NGOẠI TRỪ R weNG chúng tôi cần một cách để thiết lập lại danh sách gần đây-f. tức là nếu tôi nhấn , nó sẽ mở thành công tệp mới nhất của tôi. Nếu sau đó tôi thực hiện các thay đổi tôi cần, lưu tệp, xóa bộ đệm, sau đó nhấn sau đó khi tôi cần mở lại, nó sẽ mở tệp NEXT mới nhất của tôi, thay vì mở lại tệp mà tôi đã làm việc mặc dù FILE bây giờ là mới nhất. Dung dịch? – incandescentman

+1

Bạn có thể làm (add-hook 'kill-buffer-hook (lambda() (setq my-recentf-counter 0))), nhưng tôi có một linh cảm mà bạn sẽ sớm thấy các vấn đề khác với điều đó, quá. Tôi chỉ sử dụng gần đây-tương tác đầy đủ và tôi hài lòng với điều đó. Ngoài ra, vì bạn đang sử dụng ido, hãy xem biến ido-virtual-buffer trong Emacsen mới hơn. – pokita

Các vấn đề liên quan