1

在 emacs 中,当您键入 Mx find-name-dired 时,它会给您两个提示。第一个是您要搜索的目录路径,第二个是您要搜索的文件模式。

如何更改它(在我的 .emacs 中),以便第一个提示始终是特定的项目目录?

另外,如何使文件名搜索不区分大小写?

4

3 回答 3

7

要获得不同的起始目录,您可以建议函数使用不同的起始目录读取参数,如下所示:

(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")
于 2009-12-03T00:56:42.700 回答
1

我怀疑 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)

于 2009-12-03T13:04:50.483 回答
0

发布此内容后,我发现了另一种解决此问题的方法:

(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

于 2009-12-03T21:55:56.553 回答