emacs-查找名称目录-如何更改默认目录

emacs-查找名称目录-如何更改默认目录,emacs,dired,Emacs,Dired,在emacs中,当您键入M-x find name dired时,它将给出两个提示。第一个是要搜索的目录路径,第二个是要搜索的文件模式 如何在.emacs中更改它,使第一个提示符始终是一个特定的项目目录 另外,如何使文件名搜索不区分大小写?要获取不同的起始目录,可以建议函数使用不同的起始目录读取参数,如下所示: (defadvice find-name-dired (before find-name-dired-with-default-directory activate) "change

在emacs中,当您键入M-x 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))
然后你就叫我的名字迪德

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

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

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

(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))
然后你就叫我的名字迪德

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

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

我怀疑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的方法会更好


有一天,我不得不为德法维兹绞尽脑汁

我怀疑特雷的回答可能是优雅的,出于某些原因,每当我试图抚摸德法维兹时,都会伤到我的大脑。但我会采取暴力简单的方法,并使用以下方法:

(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中的项目目录

实际上,我认为这是在说,每次运行find file时,将默认目录更改为起始命令行目录

另一件事可能是设置一些默认目录: 设置我的默认目录/home/rob/whatever


并将命令行默认目录替换为我的默认目录/

在我发布本文后,我发现了解决此问题的另一种方法:

(add-hook 'find file-hook
 (lambda ()
  (setq default-directory command-line-default-directory)))
这将保留我启动emacs时使用的默认目录,该目录非常有用,因此您不必一直更改emacs中的项目目录

实际上,我认为这是在说,每次运行find file时,将默认目录更改为起始命令行目录

另一件事可能是设置一些默认目录: 设置我的默认目录/home/rob/whatever


并将命令行默认目录替换为我的默认目录/

了解如何使用advice的最佳方法是在advice库本身的注释中阅读教程的开头部分。M-x find library advice RET或查看此处的源代码:我同意,Trey的有点超出我的理解范围,而您的更有意义,尽管出于某种原因,您默认的模式是~/这不是要求目录,而是实际的文件模式。Pajato0,你能对你的答案稍加修改吗?这样我就可以投票了。投票似乎锁定了你的答案。了解如何使用建议的最好方法是在建议库本身的评论中浏览教程的开头部分。M-x find library advice RET或查看此处的源代码:我同意,Trey的有点超出我的理解范围,而您的更有意义,尽管出于某种原因,您默认的模式是~/这不是要求目录,而是实际的文件模式。Pajato0,你能对你的答案稍加修改吗?这样我就可以投票了。投票似乎锁定了你的答案。