Emacs에서 전체 경로 대신 파일 이름으로 파일 열기

Emacs에서 전체 경로 대신 파일 이름으로 파일 열기

여러 개의 디렉토리가 있고 두 개의 디렉토리에 공통된 파일 이름이 없다는 것이 보장됩니다(즉, foo/bar존재 하는 경우 bar다른 디렉토리에는 존재하지 않습니다). .emacs검색할 디렉토리 목록이 하드코딩 되어 있을 때 매번 지시하는 bar대신 열라고 지시하면 찾아 주도록 emacs를 어떻게 설정할 수 있습니까 ? 어떤 방식으로든 이름 충돌을 처리하면 좋겠지만(예: 가능한 일치 항목 목록), 이 경우 디렉터리에 공통 파일 이름이 없다고 확신하므로 필수는 아닙니다.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. 그러나 적어도 일치 항목이 하나만 있는 경우에는 이것이 투박합니다.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과 같은 몇 가지 대안이 있습니다.그래요팩.

관련 정보