2009-12-03 76 views
1

在emacs中,当你键入M-x find-name-dired时,它会给你两个提示。第一个是您要搜索的目录路径,第二个是您想要搜索的文件模式。emacs - find-name-dired - 如何更改默认目录

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

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

回答

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)) 

然后你只需要调用我找到的名称 - dired

关于不区分大小写,您可以自定义变量find-name-arg是不区分大小写的版本:

(setq find-name-arg "-iname") 
+0

感谢Trey,工作良好 – RobKohr 2009-12-03 21:40:50

1

我怀疑Trey的答案很可能是优雅和首选的一些原因,伤害了我的大脑每当我试图神交( defadvice),但我会采取强力简单的方法,并使用以下命令:

我猜,我失去了历史的这种方法,所以如果这是对你很重要的三分球的方式更好。

这些天,我会一个人(defadvice)

+0

了解如何使用建议的最佳方法是在建议库本身的开始处(在评论中)通读本教程。或者'Mx查找库建议RET'或者在这里查看源代码:http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/emacs-lisp/advice.el – 2009-12-03 13:59:55

+0

我同意,Trey's有点超出了我的意思,而你的意思更为合理,但由于某种原因,你默认的模式是〜/(这不是要求目录,而是实际的文件模式)。 Pajato0,你可以对你的答案做一个小修改,这样我就可以对它进行投票了。投票似乎锁定在你的答案上。 – RobKohr 2009-12-03 21:59:52

0

换我的头,我张贴了这个之后,我发现了解决这个问题的另一种方式:

(add-hook 'find file-hook 
(lambda() 
    (setq default-directory command-line-default-directory))) 

这让作为默认的目录我开始使用emacs(这很有用,所以您不必一直在emacs中更改您的项目目录)。

实际上,我认为这是说每次运行find文件时,都要将默认目录更改为您的起始命令行目录。

另一件事可能是设置一些默认的目录: (setq我的默认目录“/家/抢/无所谓”)

和我的默认目录替换命令行默认的目录/