質問: grep_menuitem.vimを利用して、NERDTreeでgrepできるようにしたいのですが、画像のようなエラーを吐き、うまくいきません。 !画像の説明をここに入力 行った手順は`grep_menuitem.vim`を`~/.vim/bundle/nerdtree/nerdtree_plugin/`以下に配置しただけです。 なにか、情報をお持ちの方がいらっしゃいましたら、ご教示いただけると幸いです。
回答: エラーはおそらくこの行で出ています。grep コマンドは外部コマンドを使いますので、その grep コマンドが入力した際の検索パターンを認識出来ないのだと思います。 尚、現在 vim が認識している grep コマンドは ``` :set grepprg? ``` で確認出来ます。 **追記** エスパー過ぎてハズれているかもですが、空白を含んだパスで実行したり、検索パターンに空白やコマンドラインではエスケープしないといけない様な文字が含まれていませんか? そうであれば grep コマンドに渡す際にクォートする必要があります。`grep_menuitem.vim` で grep コマンドを実行している部分を ``` exec 'silent grep -rn ' . shellescape(pattern) . ' .' ``` に修正して下さい。 **さらに追記** `grepprg=internal` の場合は、パスにディレクトリを指定出来ません。その代りですが `**/*` という多段階層ディレクトリの検索が可能です。 上記のスクリプトファイルであれば `&grepprg` の値を見て `internal` であれば `.` の代わりに `**/*` を指定すると直ります。