0

buffer-stackと呼ばれる Emacs ライブラリを使用して、現在開いているバッファーをページングします。メッセージのような興味のないバッファを除外し、作成したコンテンツを含むバッファのみをブラウズできるので、これは素晴らしいことです。これらのバッファを 1 回のキーストローク (A 右) でブラウズします。

また、Ido-mode を使用して、最近開いたファイルの名前をブラウズします

ただし、ファイル名だけでなく、できれば 1 回のキーストロークで実際のファイルをブラウズできるようにしたいと考えています。

最近開いたファイルを参照するにはどうすればよいですか?

4

2 に答える 2

3

この目的のためにhelm-recentfとを使用できます。persistent-action

以下のように最近使用したファイルを選択できますhelm-recentf

ここに画像の説明を入力

Ctrl-zまた、 (persistent-action)を押すと、ファイルの内容を表示できます。を押すCtrl-zと、一時的に別のウィンドウ(この場合は上のウィンドウ)にコンテンツが表示されます。

helm について知りたい場合は、公式ドキュメントを参照してください

于 2013-02-15T06:13:16.403 に答える
0

考えられる解決策は 2 つあります (必要なユース ケースに応じて異なります)。

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

1 つ目は、最近使用したファイルのリスト ( recentf-list) を調べて、次の未開封のファイルを開きます。2 番目は、リスト内の次のバッファに循環するために使用recentf-listされ、すべてがアクセスされてからエラーが発生します (ファイルが再度開かれるとリストの順序が変わるため)。

最後に到達したときにサイクリングを再開するには、をに変更するだけ(error ...)です

(setq recent-count 0)
于 2013-03-07T15:59:14.227 に答える