是否可以缩短grep结果缓冲区中的路径?默认情况下,每行grep导致Emacs如下所示:
/home/pawel/tmp/avro-src-1.5.4-fixed/lang/c/src/datum.c:107:int avro_string_set(avro_datum_t datum, const char *p)
占用了大量空间,看起来很乱,而且不太可读,特别是如果旁边有另一个窗口的话。
我只想看到文件名或部分路径 - 只要它们在grep缓冲区中是唯一的,例如:
datum.c:107:int avro_string_set(avro_datum_t datum, const char *p)
或
/home/(...)/src/datum.c:107:int avro_string_set(avro_datum_t datum, const char *p)
我想emacs需要在内部知道完整路径,所以它只是显示grep结果而不是使用'grep'参数。这该怎么做? grep缓冲区的隐藏显示模式定义是否可以解决问题,或者有更简单的方法吗?
感谢。
答案 0 :(得分:4)
我为你做了一个:scf-mode。它可以作为次要模式使用,因此当您将其关闭时,可以恢复原始文件名。
有关安装说明,请参阅文件标题。
答案 1 :(得分:2)
如果你知道Emacs lisp那么它可能并不难实现。您只需找到路径名的公共部分,将其删除,将公共部分存储在局部变量中,然后在打开grep结果时汇编存储部分的完整路径名。
这是一个好主意,它会提高grep-find输出的可读性,所以如果你在这里没有得到答案,那么我建议发布问题to emacs help。那里有专家用户,如果他们发现这个想法很有价值,他们可以迅速整理解决方案。
答案 2 :(得分:0)
您使用的是哪个版本的emacs?当我在我的emacs(23.3.1)上运行grep时,我没有路径,例如:
file1:25:some result
file2:26:some other result
另外,当你在emacs之外运行相同的grep命令时,你的盒子会发生什么?
答案 3 :(得分:0)
运行M-x cd /home/pawel/tmp/avro-src-1.5.4-fixed/lang/c/src/
之前只需M-x grep
。
如果点击的文件不在当前目录(grep
)中,您只能获得default-directory
点击的目录部分。