在 emacs 中,当您键入 Mx find-name-dired 时,它会给您两个提示。第一个是您要搜索的目录路径,第二个是您要搜索的文件模式。
如何更改它(在我的 .emacs 中),以便第一个提示始终是特定的项目目录?
另外,如何使文件名搜索不区分大小写?
要获得不同的起始目录,您可以建议函数使用不同的起始目录读取参数,如下所示:
(defadvice find-name-dired (before find-name-dired-with-default-directory activate)
"change the argument reading"
(interactive
(let ((default-directory "/some/path"))
(call-interactively 'get-args-for-my-find-name-dired))))
(defun get-args-for-my-find-name-dired (dir pattern)
(interactive "DFind-name (directory): \nsFind-name (filename wildcard): ")
(list dir pattern))
然后你就打电话my-find-name-dired。
关于不区分大小写,您可以将变量自定义为find-name-arg
不区分大小写的版本:
(setq find-name-arg "-iname")
我怀疑 Trey 的答案可能很优雅,并且由于某些原因会在我尝试 grok 时伤害我的大脑(defadvice),但我会采取暴力简单的方法并使用以下方法:
(setq my-dired-default-dir "/home/fred/lib")
(defun my-find-name-dired (pattern)
"My version of find-name-dired that always starts in my chosen folder"
(interactive "Find Name (file name wildcard): ")
(find-name-dired my-dired-default-dir pattern))
我猜我用这种方法失去了历史,所以如果这对你很重要,那么 Trey 的方法会更好。
这些天中的一天我不得不把头绕起来(defadvice)
发布此内容后,我发现了另一种解决此问题的方法:
(add-hook 'find file-hook
(lambda ()
(setq default-directory command-line-default-directory)))
这留下了我启动 emacs 的默认目录(这很有用,因此您不必一直更改 emacs 中的项目目录)。
实际上,我认为它是说每次运行查找文件时,将默认目录更改为您的起始命令行目录。
另一件事可能是设置一些默认目录:(setq my-default-directory "/home/rob/whatever")
并用 my-default-directory/ 替换 command-line-default-directory