Vimで次のことを行うためにホットキーをマップしようとしています:
- カーソルによって現在マークされている現在の c-word に一致する
- 現在のプロジェクトで見つかったすべてのオカレンスのリストを生成します
- 結果を表示する新しいタブを開く
したがって、CTAGS を使用する 1 つの例では、次のように新しいタブで変数/関数の宣言を開きます。
map <C-\> :split<CR>:exec("tag ".expand("<cword>"))<CR>
CTRL-を押すと、カーソルが\置かれている変数/関数の宣言を含む新しいタブが開きます。
マップしようとしているコマンドを以下に示します。
:lvim /\<\(text_i_want_to_find\)\>/gj *.c
:lw
このコマンドを実行すると、新しいタブが開き.c
、テキストを含むすべてのファイルのリストが表示されますtext_i_want_to_find
。これを変更して、現在とは異なる 2 つのことを行う必要があります。
- だけでなく、、、、、の拡張子を持つすべてのファイルを検索し
.c
、「Makefile」という名前のファイルも検索します.h
.cpp
.mk
.c
- CTRLテキストを手動で入力するのではなく、上に示した-\マッピングのように、カーソルの下の c-word を検索します。
text_i_want_to_find
.vimrc
マッピング用の私のファイル内のコードは次のとおりです。CTRL-をマッピングできるかどうかは完全にはわかりません/。そのため、解決すべき問題がもう 1 つあります。
map <C-/> :split<CR>:lvim /\<\(.expand("<cword>")\)\>/gj *.c *.h *.cpp *.mk Makefile
この Vim マッピングを修正するためのヒントはありますか?
編集:
提供された回答を確認した後、コードの最終バージョンを次に示します。
command! -nargs=1 SearchAll execute " grep -srnw --binary-files=without-match --exclude={*~,tags} --exclude-dir=.svn . -e " . expand("<args>") . " " <bar> cwindow
map <C-g> :SearchAll <cword><CR>
CTRL+にマッピングしましたg。コロン コマンドのように呼び出すこともできます。
:SearchAll my_text_to_search_for
これが他の人にも役立つことを願っています!