Emacsでフルパスの代わりにファイル名でファイルを開く

Emacsでフルパスの代わりにファイル名でファイルを開く

複数のディレクトリがあり、2つのディレクトリに共通のファイル名がないことが保証されます(つまり、foo/bar存在する場合はbar他のディレクトリには存在しません)。.emacs検索するディレクトリのリストがハードコーディングされているときに毎回指示するのではなく、開くように指示したら、検索するようにbaremacsをどのように設定できますか?何らかの方法で名前の競合を処理することをお勧めしますが(たとえば、一致する可能性のあるリスト)、この場合、ディレクトリに共通のファイル名がないと確信しているため、必須ではありません。foofoo/bar

答え1

この記事を書いて知った事実ifind-mode、そうだね。

(setq workspace-dir "/path/to/dir1 /path/to/dir2")
(require 'ifind-mode)
;; maybe change `ifind-command' as well

M-x ifind-mode次に、指定されたディレクトリ(デフォルトではサブディレクトリ)からファイルを検索するには、入力してすばやく完了します。


私が通常行うことはe **/barzshで行われます(エイリアスeはどこにありますかemacsclient?)。しかし、すでにEmacsを使用している場合、これは混乱する可能性があります。また、特定のファイルを頻繁に編集する場合は、そのファイルを開いたままにしてセッションを保存します。

すぐに実行しM-x find-diredて指定できますfind。ただし、少なくとも一致が1つしかない場合は、これは不正です。ifindこれをあまり酷くします。

ido特に便利な機能がたくさんあります。idoを使用してプロジェクト内のファイルを検索する

答え2

ちょうど見つけたファイルキャッシュ、私の目的に最適です。フォームにはfile-cache-add-directory-Xキャッシュにファイルを追加する機能がいくつかあり、ファイル名を入力しながらクリックしてキャッシュパスを自動補完find-fileできます。一致するものを巡回するには、何度かクリックしてください。C-Tab

EmacsWikiの投稿にはキャッシュを保存/復元する機能が含まれています。毎晩、キャッシュファイルを自動的に生成するcronジョブを作成しました。

(("filename" "/path/to/that/file/") ("other filename" "/different/path/"))

その後、emacsがEmacsWikiに記載されている機能の使用を開始すると、キャッシュから自動的にロードされます。

(require 'filecache)
(defun file-cache-read-cache-from-file (file)
  "Clear `file-cache-alist' and read cache from FILE.
The file cache can be saved to a file using
`file-cache-save-cache-to-file'."
  (interactive "fFile: ")
  (file-cache-clear-cache)
  (let ((buf (find-file-noselect file)))
    (setq file-cache-alist (read buf))
    (kill-buffer buf)))

(file-cache-read-cache-from-file "~/.file-cache")

答え3

たとえば、Recentf-mode や ido-find-file などのいくつかの選択肢があります。はいパック。

関連情報