web-dev-qa-db-ja.com

選択した単語の出現箇所をすべて強調表示しますか?

Notepad ++のように、GVimで選択したWordのすべての出現を強調表示するにはどうすればよいですか?

139
Matteo Cocon

通常モードの場合:

:set hlsearch

次に、通常モードの/コマンド、または挿入モードの<Ctrl>oに続いて/コマンドを使用してパターンを検索します。 * Normalモードでは、カーソルの下にあるWordの次の出現箇所を検索します。 hlsearchオプションは、設定されている場合、それらすべてを強調表示します。 #は、以前に出現したWordを検索します。

前の検索のハイライトを削除するには:

:nohlsearch

:nohlsearch<CR>を便利なキーにマップすることをお勧めします。

180
wilhelmtell

*キーは、カーソルの下にあるWordのすべての出現箇所を強調表示します。

105
sleepynate

私はそれが本当に古い質問であることを知っていますが、誰かがこの機能に興味があるなら、このコードを確認できます http://vim.wikia.com/wiki/Auto_highlight_current_Word_when_idle

" Highlight all instances of Word under cursor, when idle.
" Useful when studying strange source code.
" Type z/ to toggle highlighting on/off.
nnoremap z/ :if AutoHighlightToggle()<Bar>set hls<Bar>endif<CR>
function! AutoHighlightToggle()
   let @/ = ''
   if exists('#auto_highlight')
     au! auto_highlight
     augroup! auto_highlight
     setl updatetime=4000
     echo 'Highlight current Word: off'
     return 0
  else
    augroup auto_highlight
    au!
    au CursorHold * let @/ = '\V\<'.escape(expand('<cword>'), '\').'\>'
    augroup end
    setl updatetime=500
    echo 'Highlight current Word: ON'
  return 1
 endif
endfunction
22
clagccs

最も簡単な方法は、通常モードで入力します*

また、有効化および無効化するこれらのマッピングがあります

"highligh search enabled by default
set hlsearch
"now you can toggle it
nnoremap <S-F11> <ESC>:set hls! hls?<cr>
inoremap <S-F11> <C-o>:set hls! hls?<cr>
vnoremap <S-F11> <ESC>:set hls! hls?<cr> <bar> gv

クリックしてWordを選択します

set mouse=a     "Enables mouse click
nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>

ボーナス:CountWordFunction

fun! CountWordFunction()
    try
        let l:win_view = winsaveview()
        let l:old_query = getreg('/')
        let var = expand("<cword>")
        exec "%s/" . var . "//gn"
    finally
        call winrestview(l:win_view)
        call setreg('/', l:old_query)
    endtry
endfun
" Bellow we set a command "CountWord" and a mapping to count Word
" change as you like it
command! -nargs=0 CountWord :call CountWordFunction()
nnoremap <f3> :CountWord<CR>

マウスでWordを選択し、一度に出現回数を数える:OBS:このバージョンでは、最後に「CountWord」コマンドがあります。

nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>:CountWord<cr>
17
SergioAraujo

検索ベースのソリューション(*、 /...)カーソルを移動します。これは不幸な場合があります。

別の方法は、 enhanced mark.vim プラグインを使用し、.vimrcを完了してダブルクリックで強調表示をトリガーすることです(キーボードの選択によりコマンドがトリガーされる方法がわかりません)。

"Use Mark plugin to highlight selected Word  
map <2-leftmouse> \m   

複数の強調表示、永続化などが可能です。

強調表示を削除するには、次のいずれかを実行します。

  • もう一度ダブルクリック
  • :Mark(次の選択までスイッチオフ)
  • :MarkClear
9
YvesgereY

最初(または.vimrc内):

:set hlsearch

次に、強調表示するWordの上にカーソルを置き、*を押します。

hlsearchは、現在の検索のすべての出現箇所を強調表示することを意味し、*はカーソルの下のWordを検索することを意味します。

3
Ned Batchelder

検索の強調表示を有効にします。

:set hlsearch

次に、Wordを検索します。

/Word<Enter>
2
John Kugelman

これを行うための私のお気に入りは、 mark.vim プラグインです。複数の単語を異なる色で同時に強調表示できます。

スクリーンショットの例

2
Habi
set hlsearch

多分 ?

1
Rook

最初に、次のコマンドを発行してhlsearchが有効になっていることを確認します

:set hlsearch

これを.vimrcファイルにセットとして追加することもできます

set hlsearch

コマンドモードまたは通常の検索コマンドでクイック検索メカニズムを使用すると、すべての結果が強調表示されます。結果間で前方に移動するには、「n」を押して後方に移動し、「N」を押します

通常モードでは、カーソルの下の単語をすばやく検索し、1つのコマンドで次の出現箇所にジャンプするには「*」を押します。また、カーソルの下の単語を検索し、「#」を押して前の出現箇所に移動することもできます'

通常モードでは、クイック検索を呼び出すこともできます

/searchterm<Enter>

ocuurences使用のハイライトを削除するには、これを.vimrcのショートカットにバインドしました

:nohl
1
kashif

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

IncSearchが何かに設定されていることを確認してください。例:call s:Attr('IncSearch', 'reverse')。または、代わりに別のハイライトグループを使用できます。

これにより、カーソルの下にあるすべての単語がすぐに強調表示されます。コードを確認しているときに、遅延が遅くなることがわかりました。ハイライトの色はWordの色と一致するため、スキームと一貫性が保たれます。

1
Seph

カーソルを動かさずにWordを強調表示するには、plop

" highlight reg. ex. in @/ register
set hlsearch
" remap `*`/`#` to search forwards/backwards (resp.)
" w/o moving cursor
nnoremap <silent> * :execute "normal! *N"<cr>
nnoremap <silent> # :execute "normal! #n"<cr>

あなたのvimrcに。

これのいいところは、g*g#が「通常の」*#のように機能することです。


hlsearchをオフに設定するには、「短形式」を使用できます(コマンドモードで「noh」で始まる別の機能がない場合)::noh。または、長いバージョンを使用できます::nohlsearch

非常に便利なように(私はhlsearchを1日に20回トグルします)、次のようにトグルhlsearchにマップできます:

" search highlight toggle
nnoremap <silent> <leader>st :set hlsearch!<cr>

。:。あなたの<leader>が \ (デフォルトでは)、押すことができます \st (すばやく)normalモードでhlsearchを切り替えます。

または、単に:nohをマップしたいだけです:

" search clear
nnoremap <silent> <leader>sc :nohlsearch<cr>

上記は単に:nohlsearchを実行するので(:set hlsearch!とは異なり)、次に押すときに引き続きWordが強調表示されます。 * または # 通常モード。

乾杯

1
dylnmc
  1. これらの行を~/.vimrcファイルに追加します

" highlight the searched items set hlsearch " F8 search for Word under the cursor recursively , :copen , to close -> :ccl nnoremap <F8> :grep! "\<<cword>\>" . -r<CR>:copen 33<CR>

  1. :so%を使用して設定を再読み込みします
  2. 通常のモデルでは、Wordを調べます。

  3. プレス* F8を押して、Wordでプロジェクト全体を再帰的に検索します

0
Yordan Georgiev

なぜだけではない:z /

これにより、カーソルの下の現在のWordおよびその他の出現箇所が強調表示されます。また、検索するアイテムごとに個別のコマンドを指定する必要はありません。おそらく、それは不浄なgvimでは利用できないのでしょうか?デフォルトではvimにあります。

*は、カーソルを次のオカレンスに移動する場合にのみ有効です。 2つのことを視覚的に比較するとき、多くの場合カーソルを動かしたくないので、毎回*キーを押すのは面倒です。

0
INL