Vimを使用して、しばらくソースコードの一部を見つめていると、画面上の変数を突然表示させたいことがあります。それは簡単です:/<var>
それはそれらすべてを強調しています。私の問題は、多くの場合、検索によってウィンドウが移動するため、同じ場所からソースコードを見ていません。たとえ数行しかシフトしていなくても、物事がどこに移動したかを把握するのに数秒かかるので、それでも私を失望させます。
次の一致にカーソルを移動せずに検索語を強調表示することは可能ですか?
Vimを使用して、しばらくソースコードの一部を見つめていると、画面上の変数を突然表示させたいことがあります。それは簡単です:/<var>
それはそれらすべてを強調しています。私の問題は、多くの場合、検索によってウィンドウが移動するため、同じ場所からソースコードを見ていません。たとえ数行しかシフトしていなくても、物事がどこに移動したかを把握するのに数秒かかるので、それでも私を失望させます。
次の一致にカーソルを移動せずに検索語を強調表示することは可能ですか?
回答:
http://vim.wikia.com/wiki/VimTip1572
このプラグインを使用した場合は、単に機能を有効にすることができます
\ m
次に、NumPadキーを使用して、カーソルを動かさずに、その単語に色を割り当てます。
1
多数の異なる単語、または必要に応じてより複雑な検索パターンに対して、一度に多数の異なるハイライトを使用できます。
skyblueの答えは、通常の検索ハイライトを使用して、目的を達成する方法のアイデアの中核を示しています。
*
commandと同様に機能するキーバインドを作成することで、この手法を拡張しましたが、実際には次の一致に移動しません。
(自分自身の使用とビューの復元を避けるため)の単語選択に相当するものを指摘してくれたgaryjohnに感謝します。これにより、マッピングに直接移動できるようにコードが十分に単純化されます(関数を使用する必要がなくなります)。部分的な単語(など)に一致するマッピングも追加しました 。expand()
*
*
g*
:" The leader defaults to backslash, so (by default) this
:" maps \* and \g* (see :help Leader).
:" These work like * and g*, but do not move the cursor and always set hls.
:map <Leader>* :let @/ = '\<'.expand('<cword>').'\>'\|set hlsearch<C-M>
:map <Leader>g* :let @/ = expand('<cword>')\|set hlsearch<C-M>
normal *
置き換えることによって、let @/ = @/
とlet @/ = expand("<cword>")
。
検索レジスタを、一致させたい変数に設定することもできます。
最初に、検索の強調表示がオンになっていることを確認します。
:set hlsearch
次に、次のコマンドで検索レジスタを設定できます。
:let @/="variable"
これは、次の一致にジャンプすることなく、変数のすべての出現を強調表示します。
詳細については、 :help @/
1つの方法は、:match
コマンドを使用することです。たとえば、
:match Question '^R^W'
これにより、質問ハイライトグループを使用して、カーソルの下の単語が強調表示されます。私の端末では緑がきれいなので、よく質問グループを使用します。利用可能なハイライトグループを表示するには、実行します
:hi
それぞれは、Ctrl-RとCtrl-Wであり、カーソルの下の単語に置き換えられています。見る^R
^W
:help c_CTRL-R_CTRL-W
詳細については。見る
:help :match
:match
コマンドの詳細については。その強調表示をクリアするには、単に実行します
:match
引数なし。