2009-10-11 11 views

答えて

81

この自動コマンドは、あなたがやりたいことになります。

:autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\')) 

vi highlight current word

編集:私は私の例ではIncSearchハイライトグループを使用していたが、あなたはこれを実行することにより、使用する他の色を見つけることができますコマンド:

:so $VIMRUNTIME/syntax/hitest.vim 
+0

は、マッチングエラーを静かにする方法はありますか? – UncleZeiv

+0

@UncleZeiv:エラーがどういう意味なのかよく分かりません –

+0

Cスタイルのコメント(星の後ろにスラッシュ)の最後にカーソルを移動すると 'E488:後ろの文字:match IncSearch/\ <*/\> '、そして私はさらにEnterを押し続けなければならず、かなり迷惑になります!私はそれが何らかの形で脱出すべきだと思っています。少なくとも警告を消す方法を見つけるのは大丈夫でしょう。とにかく素晴らしいチップ。 – UncleZeiv

18

あなたは

:set hlsearch 

は、検索パターンのすべての出現をハイライトし、あなたが望むものにあなたにいくつかの方法を取得します、あなたのカーソル下の単語の出現を、見つけることが *または #を使用するように設定した場合。しかし、私は構文認識変数の強調表示はVIMの範囲を超えていると思います。

+1

あなたのソリューションは素晴らしいです!唯一の問題は、カーソルが次の検索結果にジャンプする*ときです。現在の単語にカーソルを置くことはできませんか? – Meysam

+2

@Meysam - あなたはそれだけで(テストされていない)簡単なマッピングを作成することができます:nmap * * N – lukaszkorecki

5

あなたが本当に欲しいのは次のプラグインですと思います。久保田:

http://www.vim.org/scripts/script.php?script_id=4306

の説明によると:「このスクリプトは、多くのIDEのようにカーソルの下の単語を強調しています。」

乾杯。

5

この文は、カーソルの下の単語のすべての出現箇所を強調無効/変数を有効にすることができます:

:autocmd CursorMoved * exe exists("HlUnderCursor")?HlUnderCursor?printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\')):'match none':"" 

一つは、と強調しアクティブになります

:let HlUnderCursor=1 

し、それを無効にします

:let HlUnderCursor=0 

有効/無効のショートカットキーを簡単に定義できますNGの強調表示:

:nnoremap <silent> <F3> :exe "let HlUnderCursor=exists(\"HlUnderCursor\")?HlUnderCursor*-1+1:1"<CR> 

実行から一致ステートメントを防ぎ、そして現在のハイライトをクリアしないと、変数を削除:

:unlet HlUnderCursor 
2

次のような言語の単語(文/ preprocsを強調したくない場合if#define)カーソルがこれらの言葉にあるとき、あなたは@too_much_php回答に基づいて、あなたの.vimrcでこの機能を置くことができます。

let g:no_highlight_group_for_current_word=["Statement", "Comment", "Type", "PreProc"] 
function s:HighlightWordUnderCursor() 
    let l:syntaxgroup = synIDattr(synIDtrans(synID(line("."), stridx(getline("."), expand('<cword>')) + 1, 1)), "name") 

    if (index(g:no_highlight_group_for_current_word, l:syntaxgroup) == -1) 
     exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\')) 
    else 
     exe 'match IncSearch /\V\<\>/' 
    endif 
endfunction 

autocmd CursorMoved * call s:HighlightWordUnderCursor() 
関連する問題