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