4

emacsのfind-grepの結果に対してgrepを実行しようとしているので、次のコマンドを使用します。

検索...| xargs ... | grep -v "include"

結果はgrepバッファーに表示されますが、そのファイルに移動しようとしている各エントリでEnterキーを押すと、emacsはファイルが存在しないことを示します。ミニバッファでは、ファイルのフルパスの前に^[[K文字があります。これにより、基本的にファイル名全体が認識できなくなります。grepのマニュアルを調べましたが、それについて何ができるかまだわかりません。

私はおそらくこれを行う必要はありませんが、2つのパターンを渡す方法がわかりません。1つはgrep用で、もう1つは逆grep用です。(正規表現かもしれませんか?)

誰かがこれについて何か提案がありますか?

解決:

私はCento5.5マシンでこれを行っていました。古いバージョンのgrepが原因で問題が発生していることが判明しました。ホームディレクトリに最新バージョンのgrepをインストールしましたが、すべて問題ありません。

4

2 に答える 2

3

コメントを通じて問題を「デバッグ」した後、これはあなたにとってうまくいくはずの解決策です。それを .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))))))
于 2011-04-05T17:18:31.593 に答える
0

同じ問題が発生しましたが、grepのバージョンを変更できなかったため、回避策を使用しました。問題はgrepsの行末にあるようだったので、grepの結果をawkで実行し、そのまま印刷します。

... | grep -v blaa | awk '{print $0}'

理由はわかりませんが、これで問題は解決します。

于 2012-06-06T06:41:24.427 に答える