2

良い一日、

CTRL+にマップした単純な関数がありますL。これを通常モードで使用して、単語または変数のプロジェクト内のすべてのインスタンスを検索します。

" Find all occurences in files
map <C-l> :execute " grep -srnw --binary-files=without-match --exclude=*~ --exclude-dir=.svn  . -e " . expand("<cword>") . " " <bar> cwindow<CR>

これからコマンドモード機能を作成しようとしているので、次のようなことができます。

:mySearchFunction wordToFind

grepこのようにして、短くて単純な「すべてのファイルを検索」機能を効果的に取得できるため、上記の長い機能を常に入力する必要がありません。関数の部分の後でコードを変更しようとしました. -e " .expand...が、VI/VIM 関数の記述に慣れていません。C および BASH スクリプトに精通していますが、この関数が期待どおりに動作しません。

この私のマッピングからコマンドモード機能を作成するのを手伝ってもらえますか?

ありがとうございました。


編集: @Conner からの回答の修正版を投稿しています。CTAGStagsファイルも除外します。

command! -nargs=1 SearchAll execute " grep -srnw --binary-files=without-match --exclude={*~,tags} --exclude-dir=.svn  . -e " . expand("<args>") . " " <bar> cwindow
map <C-l> :SearchAll <cword><CR>
4

1 に答える 1

6
command! -nargs=1 MySearchFunction execute " grep -srnw --binary-files=without-match --exclude=*~ --exclude-dir=.svn  . -e " . expand("<args>") . " " <bar> cwindow
map <C-l> :MySearchFunction <cword><CR>

ack と Ack.vim を調べることをお勧めします。

于 2012-10-30T18:36:33.273 に答える