2

PHPコードを記述していて、このファイルで定義されていることがわかっている関数呼び出しを思いついたとします。自動的にを検索するようにマッピングを作成したいと思います'function <WORD_UNDER_CURSOR>'

を使用してこれを行うことができましたnmap <Leader>8 /function <C-r><C-w><CR>が、問題は検索の折り返しがオフになっていることです(そして、そのようにしたい)ので、半分の時間で画面の終わりに到達したエラーが発生し、N上を向くために自分自身を押す必要があります。Nnマッピングの最後にを追加しようとしましたnmap <Leader>8 /function <C-r><C-w><CR>Nnが()、機能しませんでした。どうしてか分かりません!実際、私が後に置いたもの<CR>は何の効果もないようです。

提案して説明してもらえますか?Vimマッピングに関するドキュメントは、探しているものを見つけるのが本当に本当に難しいことがわかりました。たとえば、私はまだ何<C-r><C-w>であるかわかりません!

4

4 に答える 4

1

前方に検索するにはを使用/し、後方に検索するにはを使用します?。したがって、?の代わりに既存のマップでを使用してください/

<C-r><C-w>のemacs表記です^R^W。viの実装でemacs表記が何をしているのかわかりませんが、あります。:help ^R^Wしかし動作します。カーソルの下に単語を挿入するだけです。

于 2012-07-30T23:11:07.037 に答える
1

Vimはそれをネイティブに行うことができますgd。これは、関数に限定されない「定義に移動」を意味します。を参照してください:help gd


この<C-r><C-w>表記は、Vimのドキュメントのいたるところに使用されており、vimについて話すときにコンボを作成するための標準的な方法です。Emacsの標準的な表記法はC-r C-w、なしの場合<>です。

ドキュメント:helpの使用に関する簡単なヒントと:help key-notation、キー/コンボの問題および…キー表記の詳細について入力します。

あなたの場合、:help ctrl-r_ctrl-wまたは:help <c-r>_<c-w>(アンダースコアに注意してください)はあなたを助けたでしょう。

于 2012-07-31T05:40:05.850 に答える
0

これに基づいたマッピング:grepは、あなたが望むことをするはずです(詳細はこちらをご覧ください):

map <buffer> <F3> :grep 'function.*<C-r><C-w>' %<CR><CR>
于 2012-07-31T17:42:27.343 に答える
0

上記のすべての回答とコメント、およびヘルプファイルから情報を収集し、誰も直接回答しなかったため、この回答をまとめました。私は2つの解決策を見つけました:

1-yiwカーソルの下の単語をコピーしggてから、ファイルの先頭にコピーできます。function <C-r>"最後に、「レジスタから関数空間の内容を意味する」(最後のヤンク)を検索します。副作用:何も見つからない場合は、ファイルの先頭にいて、レジスタを台無しにします。:-/

nmap <Leader>8 yiwgg /function <C-r>"<CR>

2-質問の元のコマンドの修正である私の個人的な作成:

nmap <Leader>8 /function <C-r><C-w><CR> Nn

/コマンドが「notfounderror」をスローし、残りのマッピングが中止されたため、機能しませんでした。したがって、エラー(私が探したが見つけられなかった)を無視する方法を見つけるか、次を使用することができます。

:nmap <Leader>8 :call search('function <C-r><C-w>','w')<CR>

ラップアラウンドを意味する「w」フラグに注意してください。を探し:help searchます。


エクストラ:

3-完璧な世界right_way_to_do_it:gDファイルが整理されているかctagsである場合に使用します。

好奇心のため<Leader>8に、8の上に*があるので使用しました。:)

于 2012-07-31T21:15:26.040 に答える