Notepad ++のように、GVimで選択した単語のすべての出現を強調表示するにはどうすればよいですか?
15 に答える
通常モード:
:set hlsearch
/
次に、通常モードでコマンドを使用してパターンを検索するか、挿入モードで を<Ctrl>o
続けます。通常モードでは、カーソルの下にある次の単語が検索されます。このオプションは、設定されている場合、それらすべてを強調表示します。単語の前の出現を検索します。/
*
hlsearch
#
前の検索のハイライトを削除するには:
:nohlsearch
:nohlsearch<CR>
便利なキーにマップしたい場合があります。
*
キーは、カーソルの下にある単語のすべての出現箇所を強調表示します。
私はそれが本当に古い質問であることを知っていますが、誰かがこの機能に興味を持っているなら、このコードをチェックできます 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
最も簡単な方法は、通常モードで入力することです*
これらのマッピングを有効および無効にすることもできます
"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
単語をクリックして選択
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>
マウスで単語を選択し、出現回数を一度にカウント: OBS: このバージョンでは、最後に「CountWord」コマンドがあることに注意してください。
nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>:CountWord<cr>
検索ベースのソリューション ( *、/...) はカーソルを移動しますが、これは残念なことかもしれません。
別の方法は、強化された mark.vimプラグインを使用して.vimrc
から、ダブルクリックでハイライトをトリガーできるようにすることです (キーボードの選択によってコマンドがトリガーされる方法がわかりません)。
"Use Mark plugin to highlight selected word
map <2-leftmouse> \m
複数の強調表示、持続性などを可能にします。
強調表示を削除するには、次のいずれかを行います。
- もう一度ダブルクリック
:Mark
(次の選択までスイッチオフ):MarkClear
最初に (または .vimrc で):
:set hlsearch
次に、強調表示する単語の上にカーソルを置き、 を押します*
。
hlsearch
は、現在の検索のすべての出現を強調表示することを*
意味し、カーソルの下の単語を検索することを意味します。
たとえば、このプラグイン:
vimawesome.comでカーソルの下を検索するだけです
clagccsが述べたように、重要なのは、ハイライトが検索と競合しないことです: https://vim.fandom.com/wiki/Auto_highlight_current_word_when_idle
- vim-illuminate はデフォルトで強調表示されますが、私のスクリーンショットでは下線に切り替えました
- vim-illuminate は、デフォルトでカーソルの下の単語を強調表示/下線を付けます。私のスクリーンショットでは、設定を解除しています
- 私の配色は非常に灰色がかっています。あなたのものもチェックしてカスタマイズしてください。
最初に、次のコマンドを発行して hlsearch が有効になっていることを確認します。
:set hlsearch
これを設定として .vimrc ファイルに追加することもできます
set hlsearch
コマンド モードまたは通常の検索コマンドでクイック検索メカニズムを使用すると、すべての結果が強調表示されるようになりました。結果間を進むには、'n' を押して戻ります 'N' を押します
通常モードでは、カーソルの下の単語をすばやく検索し、1 つのコマンドで次の出現箇所にジャンプするには、'*' を押します。また、'#' を押すと、カーソルの下の単語を検索して前の出現箇所に移動することもできます。 '
通常モードでは、クイック検索は
/searchterm<Enter>
ocuurences の使用に関するハイライトを削除するために、これを .vimrc のショートカットにバインドしました
:nohl
これを行うための私のお気に入りは、mark.vimプラグインです。複数の単語を異なる色で同時に強調表示できます。
set hlsearch
多分 ?
検索の強調表示を有効にします。
:set hlsearch
次に、次の単語を検索します。
/word<Enter>
使用するautocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))
IncSearch
何かに設定されていることを確認してください。例えばcall s:Attr('IncSearch', 'reverse')
。または、代わりに別のハイライト グループを使用することもできます。
これにより、カーソルの下にあるすべての単語がすぐに強調表示されます。コードを調べていると、遅延によって速度が低下することがわかりました。ハイライトの色は単語の色と一致するため、スキームとの一貫性が保たれます。
だけではない理由: z/
これにより、カーソルの下の現在の単語とその他の出現箇所が強調表示されます。また、検索するアイテムごとに個別のコマンドを指定する必要はありません。おそらく、それは邪悪なgvimでは利用できませんか?デフォルトではvimにあります。
* は、カーソルを次の出現箇所に移動させたい場合にのみ有効です。2 つのものを視覚的に比較する場合、カーソルを動かしたくないことがよくあります。毎回 * キーを押すのは面倒です。