我尝试对emacs的find-grep的结果进行grep,所以我使用以下命令:
找到… | xargs … | grep -v“include”
结果确实显示了我的grep缓冲区,但是当我按下每个条目上的enter以尝试转到该文件时,emacs说该文件不存在.在迷你缓冲区上,在文件的完整路径之前,有一个^ [[K字符.这基本上使整个文件名无法识别.我查看了grep的手册,但仍然不确定我能做些什么.
我可能不必这样做,但我只是不确定如何传递两个模式,一个是grep而另一个是反grep. (可能是正则表达式?)
有人对此有什么建议吗?
解:
我在Cento 5.5机器上这样做.由于旧版本的grep,它原来是一个问题.我在我的主目录中安装了最新版本的grep,现在一切都很好.
最佳答案 通过评论“调试”问题后,这是一个适合您的解决方案.将其添加到.emacs并自定义它,以便正则表达式匹配您要从文件名中删除的特殊字符:^ [[K
(defadvice compilation-find-file (before compilation-find-file-strip-odd-chars activate)
"Strip the ^[[K in the input string"
(let ((filename (ad-get-arg 1)))
(save-match-data
(when (string-match "^\\[\\[K" filename)
(ad-set-arg 1 (replace-match "" nil nil filename))))))