在emacs中输入M-x find-name-dired时,它会给你两个提示。第一个是您要搜索的目录路径,第二个是您要搜索的文件模式。
如何更改它(在我的.emacs中),以便第一个提示始终是特定的项目目录?
另外,我如何制作文件名搜索不区分大小写?
答案 0 :(得分: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")
答案 1 :(得分:1)
我怀疑Trey的回答可能是优雅和偏好的,因为某些原因每当我试图嘲笑时都会伤害我的大脑(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)
答案 2 :(得分:0)
发布后我发现了另一种解决此问题的方法:
(add-hook 'find file-hook
(lambda ()
(setq default-directory command-line-default-directory)))
这是我默认启动emacs的目录(这很有用,因此您无需一直在emacs中更改项目目录)。
实际上我认为每次运行查找文件时都会将默认目录更改为起始命令行目录。
另一件事可能是设置一些默认目录: (setq my-default-directory“/ home / rob / whatever”)
并将命令行-default-directory替换为my-default-directory /