2011-03-02 3 views
3

私は現在の単語のすべてのインスタンスを強調表示するために*を使用することが多く、次の単語に進むという事実はかなり面倒です。私は実際に進める必要がある場合、私はいつも "n"を使用できることを知って、この動作を無効にしたいと思います。vimでは、現在の単語を強調表示するために "*"を再バインドし、次の単語に進むことはできませんか?

洞察?

編集:視覚的に気を散らしているので、画面の再描画をすべての費用で避けたいと付け加えます。

答えて

9

はこれを試してみてください:

nnoremap * :let @/ = "\\<<C-R><C-W>\\>"<CR> 

は(あなたが上'hlsearch'を持っていると想定します)。これは現在の検索パターンをカーソル下の単語に変更するだけです(ワード境界に一致させるために\<\>で囲まれています)。 hlsearchが有効になっている場合は、単語が強調表示されます。 nNは通常通り動作します。

参照:

:help :[email protected] 
:help quote/ 
:help c_CTRL-R_CTRL-W 
+0

広告として動作します。どうもありがとう! –

+2

'let @/= '\ <'。expand( '')。 '\>' 'もうまくいきます。 –

+0

@Luc Hermitte:あれはいいですか? –

1

私は正確な答えを出すことはできませんが、this Vim Tipは、あなたの.vimrcに何を追加して、Vimがアイドル状態のときにカーソルの下の単語を強調表示するかを教えてくれます。

nnoremap * '*N' 

(これは、画面を再描画)

+0

私はこのヒントを見てきましたが、私はそれを自動的に強調表示したくない、私はそれが非常に気が散る見つけるだろう。今、誰かが私がしたいことにそれを適応させる方法を知っていれば... –

+0

@static_rtti:まあ、あなたは 'z /'と打ってスクリプトの動作を切り替えることができます。あれ見た?強調表示をしたい場合は、 'z /'と打ち込んでください。もう必要がなければ 'z /'と打ち込んでください。 – eckes

1

任意のキーの再マッピングなし

作品を...。私はそれが非常に便利だと思う。最も興味深いのは、あなたがより多くのマッチを持つことができるということです。

+0

私はそれについて考えましたが、実際に画面を再描画するのを避けたいのです... –

+0

Hmあなたはなぜここに ''を持っていますか?より複雑なケースでは、 'nnoremap * * N'は同じ結果を返します。 – ZyX

+1

@static_rtti 'lazyredraw'が設定されていれば何も再描画しません(しかし、stilはカーソル行のウィンドウ位置を動かし、折り目を開くかもしれません)。 – ZyX

2

this Vim Tipを試してみてください:あなたはそれを返すように再マッピングすることができ

関連する問題