emacs find-grep grep

我尝试对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))))))
点赞