2574


[grep_menuitem.vim](https://gist.github.com/inagaa/5141204)を利用して、NERDTreeでgrepできるようにしたいのですが、画像のようなエラーを吐き、うまくいきません。

![画像の説明をここに入力](https://i.stack.imgur.com/pvnQF.png)

行った手順は`grep_menuitem.vim`を`~/.vim/bundle/nerdtree/nerdtree_plugin/`以下に配置しただけです。

なにか、情報をお持ちの方がいらっしゃいましたら、ご教示いただけると幸いです。


CC BY-SA 3.0
2014-12-25T10:02:30.550
2564
2014-12-25T11:57:45.817
5710
question
vim
VimのNERDTreeでgrepができません。


エラーはおそらく[この行](https://gist.github.com/inagaa/5141204#file-grep_menuitem-
vim-L47)で出ています。grep コマンドは外部コマンドを使いますので、その grep
コマンドが入力した際の検索パターンを認識出来ないのだと思います。 尚、現在 vim が認識している grep コマンドは

[code]

    :set grepprg?
    
[/code]

で確認出来ます。

**追記**

エスパー過ぎてハズれているかもですが、空白を含んだパスで実行したり、検索パターンに空白やコマンドラインではエスケープしないといけない様な文字が含まれていませんか？

そうであれば grep コマンドに渡す際にクォートする必要があります。`grep_menuitem.vim` で grep コマンドを実行している部分を

[code]

    exec 'silent grep -rn ' . shellescape(pattern) . ' .'
    
[/code]

に修正して下さい。

**さらに追記**

`grepprg=internal` の場合は、パスにディレクトリを指定出来ません。その代りですが `**/*`
という多段階層ディレクトリの検索が可能です。

上記のスクリプトファイルであれば `&grepprg` の値を見て `internal` であれば `.` の代わりに `**/*` を指定すると直ります。


CC BY-SA 3.0
2014-12-25T10:07:52.823
2565
2014-12-25T10:54:19.403
2014-12-25T10:54:19.403
440
440
2564
answer

[code]

    .vimrc
    
    set grepprg=internal " 変更前
    set grepprg=grep\ -nH " 変更後
    
[/code]

`.vimrc`を上記のように編集し、外部grepを使うようにしたところ、正常に動作しました。


CC BY-SA 3.0
2014-12-25T11:57:45.817
2574
2014-12-25T11:57:45.817
5710
2564
answer