我在〜/ .emacs中有以下自定义函数:
(defun xi-rgrep (term)
(grep-compute-defaults)
(interactive "sSearch Term: ")
(rgrep term "*.[ch]*" "../"))
这个函数只运行rgrep用于我感兴趣的文件/目录中输入的术语。但是,我想匹配原始rgrep功能,将默认搜索词作为该点的单词(我认为这是术语?)。我该如何实现这一目标?我尝试了几件事,包括运行(grep-read-regexp),但还没有成功。
答案 0 :(得分:5)
您可以使用'thingatpt包,如下所示:
(require 'thingatpt)
(defun xi-rgrep (term)
(interactive (list (completing-read "Search Term: " nil nil nil (thing-at-point 'word))))
(grep-compute-defaults)
(rgrep term "*.[ch]*" "../"))
答案 1 :(得分:2)
这是另一种不需要'thingatpt包并使用(grep-read-regexp)的方法:
(defun xi-rgrep ()
(interactive)
(grep-compute-defaults)
(rgrep (grep-read-regexp) "*.[ch]*" "../"))
我更喜欢这个,因为'thingatpt需要设置边界,如果你想用符号来表示字符,例如下划线,这通常是变量的情况。