2013-02-15 4 views
0

Я использую библиотеку Emacs под названием buffer-stack для просмотра через мои открытые буферы. Это здорово, потому что это позволяет мне исключать неинтересные буферы, например Сообщения и просматривать только буферы с содержимым, которое я создал. Я просматриваю эти буферы одним нажатием клавиши A-right.как просматривать последние файлы (а не только имена файлов) в Emacs?

Я также использую Ido-mode для browse through the names of recently opened files.

Однако, я хотел бы иметь возможность просматривать не только имена файлов, но и фактические файлы, желательно с одним нажатием клавиши.

Как просмотреть недавно открытые файлы?

+0

Так как мы определение «Browse» в «просматривать реальные файлы»? – phils

+0

Посетите файлы в буфере. Таким образом, нажатие клавиши (например, A-down) откроет последний открытый файл, и повторное обращение к нему снова посетит следующий последний и т. Д. – incandescentman

ответ

3

Для этой цели можно использовать helm-recentf и ее persistent-action.

Вы можете выбрать последний файл с helm-recentf, как показано ниже.

enter image description here

И вы можете увидеть содержимое файла, нажав Ctrl-z (постоянные действия). вы нажимаете Ctrl-z, а затем показываете его содержимое в другое окно (в данном случае в верхнем окне) временное.

Пожалуйста, смотрите official document, если вы узнаете о штурвале

+1

Вы также можете активировать функцию 'C-c C-f' с функцией управления шлейфом для автоматического просмотра. –

0

Здесь возможно два решения (в зависимости от точности прецедента вы хотите).

(defun zin/open-recent-file() 
    "Open the most recent currently closed file. 

This will omit currently open files, instead it will retrieve the 
next oldest file in recentf-list." 
    (interactive) 
    (let* ((count 0) 
     (recent recentf-list) 
     (r-length (length recent)) 
     (buffers (mapcar 'buffer-file-name (buffer-list)))) 
    ;; Compare next file on the list to open buffers, if open skip it. 
    (while (member (nth count recent) 
        buffers) 
     (setq count (1+ count)) 
     (if (= r-length count) 
      (error "All recent buffers already open"))) 
    (find-file (nth count recent)))) 
(lexical-let ((recent-count 0)) 
    (defun zin/visit-recent-file() 
    "Visit files on the recentf-list in descending order. 

This will work backwards through recentf-list visiting each file 
in turn." 
    (interactive) 
    ;; If last command was not to cycle through the files, then start 
    ;; back at the first in the list. 
    (unless (eq last-command 'zin/visit-recent-file) 
     (setq recent-count 0)) 
    ;; If current buffer is the current entry on the list, increment. 
    (if (equal (buffer-file-name) (nth 0 recentf-list)) 
     (setq recent-count (1+ recent-count))) 
    ;; Error if all entries have been processed 
    (if (= recent-count (length recentf-list)) 
     (error "At oldest recent buffer")) 
    ;; Open appropriate file. 
    (find-file (nth recent-count recentf-list)))) 

Первый будут проходить через список последних файлов (recentf-list) и откройте следующий нераскрытый файл. Второй будет использовать recentf-list для перехода к следующему буфере в списке, пока все не будут посещены, а затем вычеркните ошибку (поскольку порядок списка изменится по мере возобновления файлов).

Чтобы его перезапустить велосипедный, когда он доходит до конца, просто изменить (error ...) к

(setq recent-count 0) 

 Смежные вопросы

  • Нет связанных вопросов^_^