在NetBeans中高亮显示Vim中的光标下的变量

时间:2009-10-11 17:34:37

标签: vim netbeans highlight

我在NetBeans工作并喜欢这个功能:当您将光标放在变量名称中时,所有出现的变量都会突出显示。这对于快速搜索变量的所有出现非常有用。是否可以将此行为添加到Vim?

9 个答案:

答案 0 :(得分:85)

此自动命令将执行您想要的操作:

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

vi highlight current word

编辑:我在我的示例中使用了IncSearch突出显示组,但您可以通过运行此命令找到要使用的其他颜色:

:so $VIMRUNTIME/syntax/hitest.vim

答案 1 :(得分:21)

如果您设置

:set hlsearch

突出显示搜索模式的所有匹配项,然后使用*#查找光标下单词的出现位置,这样可以获得所需内容。但是我认为语法感知变量突出显示超出了VIM的范围。

答案 2 :(得分:8)

此语句允许变量启用/禁用高亮显示光标下单词的所有出现:

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

可以通过以下方式激活突出显示:

:let HlUnderCursor=1

并使用以下命令禁用它:

:let HlUnderCursor=0

可以轻松定义用于启用/禁用突出显示的快捷键:

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

删除变量会阻止匹配语句执行,并且不会清除当前突出显示:

:unlet HlUnderCursor

答案 3 :(得分:5)

我认为你真正想要的是Shuhei Kubota的以下插件:

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

根据描述:'此脚本突出显示光标下的单词,就像许多IDE一样。'

干杯。

答案 4 :(得分:4)

如果您不希望在光标位于这些单词上时突出显示语言单词(语句/预处理,例如if#define),则可以将此功能放在.vimrc中基于@too_much_php答案:

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()

答案 5 :(得分:0)

此变体针对速度(使用CursorHold而不是CursorMoved)进行了优化,并与hlsearch兼容。当前的搜索词突出显示不会被破坏。

" autosave delay, cursorhold trigger, default: 4000ms
setl updatetime=300

" highlight the word under cursor (CursorMoved is inperformant)
highlight WordUnderCursor cterm=underline gui=underline
autocmd CursorHold * call HighlightCursorWord()
function! HighlightCursorWord()
    " if hlsearch is active, don't overwrite it!
    let search = getreg('/')
    let cword = expand('<cword>')
    if match(cword, search) == -1
        exe printf('match WordUnderCursor /\V\<%s\>/', escape(cword, '/\'))
    endif
endfunction

答案 6 :(得分:0)

vim_current_word开箱即用,具有语法意识,并允许自定义颜色。

答案 7 :(得分:0)

要映射F2以切换突出显示:

map <F2> :set hlsearch!<CR> * #

这当然不是完美的。 '*#'跳得更多...

答案 8 :(得分:0)

类似于已接受的答案,但是通过这种方式,您可以将光标悬停在单词上之后设置突出显示之前的延迟时间。 0以毫秒为单位,表示它将在1秒后突出显示。

1000

有关更多信息,请参见set updatetime=1000 autocmd CursorHold * exe \ printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))