求助: Emacs下搜索多个项目目录

一般我们是用 grep 搜对吗? 我是在那基础上自己写了几个小函数 之前是因为我把所有项目都放在一个大项目里 后来我拆分出来了 七八个都放在 ~ 目录里, 所以搜索有点麻烦
请教大概思路怎样? 是不是用: shell-command + find + grep ? 我现在是这样的:


逼我多个项目写了独立的接口, 但有时候还是想全部一起 但是又不能直接搜 ~ 目录吧
所以我还特意创建了一个目录配上 链接 ln 但是好像行不通~

记得 grep 有参数指定是否跟随软链接,应该叫 follow-xxx 这种,可以查下man。

1 个赞

直接用color-rg.el吧,连批量替换的功能都写了

我好奇心比较重啊, 能力范围内的话尽量就自己来, 自然而然学到的也比较多(最主要写代码有趣啊) 跟读书时一样, 不仅仅满足于考试啊


查了下 是用 -R 替代 -r 但是原来在 Mac 下都是两者都可以 在 Ubuntu 就只能-R …

我们时不时会 “因小得大” 想搞定一个问题, 结果掌握了更深入的根层问题得到意外的知识收获!!

顺便求助一下(找了一圈都没找到)
Emacs的基本知识把: 我有多个打开的buffer, 我怎么根据buffer名字跳转到那个buffer?

用 switch-to-buffer 会直接替换了当前的 active buffer

switch-to-buffer-other-window 应该是要的吧

1 个赞

根据名字获取buffer:get-buffer

临时切换到一个buffer:with-current-bufferwith-current-buffer第一个参数也可以是名字,故可以不用第一个函数。

如果你有个比较方便的办法切换 project 不就不需要给搜每个 project 整个命令了?

你提到那两个只能获取, 并没有能跳转到该buffer啊

没有 select-buffer/goto-buffer

是啊 但是有时候我就是要搜所有 project

我也是有经常就搜当前project的

比较方便的切换方法就是 tmux
真的很感恩 太有用了又不用钱, 真是没人性(人性很吝啬的)

我理解错了,我以为你要临时切换到一个buffer,然后插入内容啥的。

你也不知道这怎么解决吗? 这不是很常见的问题?

你的需求有很多包可以达到,可能要写点代码,不过会比你自己写少,支持的特性也会比较多。 既然你要自己写,继续按着你上面的写,你可以利用find支持多个目录搜索的特性,然后生成命令一次性搜索多个项目,这样只有一个buffer,不知道满不满足你的需求,比如一个buffer中内容会不会太乱,需不需要分割内容啥的。

你上面用message是故意想把执行的命令打印出来吗?

第三个参数可以自定义缓冲区名字,然后你随便想显示哪里显示哪里。

对呀 compilation-start 调用这个message生成的 shell 啊

我是以为这个是一个很"常见"的功能, 就是在项目搜索代码某个关键字的时候, 又在那个基础上里再搜某个关键字, 难道是我用 Common Lisp 的才会比较常用上?

有时候花时间精力去搜查一时很快, 一时很久没搜到

switch-to-buffer-other-window 这个函数是你想要的吗?

1 个赞

对, 要的就是你!!
这个函数有点长没留意到…
因为我也只用 控制台, 所以自以为好像用不到 window/frame 这些

message会把消息打印到Messages buffer中,然后再返回字符串,你应该想用的是format

常见是常见,不过问题是你说你要自己实现(我觉得我理解错了,你说的常见是指在另外一个窗口显示的需求,还是说多项目搜索),你这个 “又在那个基础上里再搜索某个关键字”我会理解成,搜索完一个关键字,搜索到一堆候选项,然后再在这堆候选项的基础上继续过滤关键字,不过好像跟前面说的不一样。