여러 개의 디렉토리가 있고 두 개의 디렉토리에 공통된 파일 이름이 없다는 것이 보장됩니다(즉, 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
. 그러나 적어도 일치 항목이 하나만 있는 경우에는 이것이 투박합니다.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과 같은 몇 가지 대안이 있습니다.그래요팩.