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

kip*_*ets 56 vim netbeans highlight

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

too*_*php 89

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

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

vi突出显示当前单词

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

:so $VIMRUNTIME/syntax/hitest.vim
Run Code Online (Sandbox Code Playgroud)

  • 好的,很简单,我只需将其更改为`:autocmd CursorMoved*silent!exe printf('匹配IncSearch /\<%s \> /',展开('<cword>'))` (9认同)
  • @UncleZeiv:我已经修复了逃避模式的答案."沉默!" 只能抑制错误 - 最好修复它们的原因..;) (3认同)
  • 任何慈善灵魂都可以解释这个命令是如何工作的吗? (3认同)
  • Netbeans将突出显示当前所选变量的上下文可访问的变量.它知道在lamda函数中声明的相同变量与包含它的普通函数之间的区别,并将相应地突出显示.是否有可能在突出显示这种语言特定的情报? (3认同)

Bri*_*new 22

如果你设置

:set hlsearch
Run Code Online (Sandbox Code Playgroud)

突出显示所有出现的搜索模式,然后使用*#查找光标下单词的出现,这将使您获得所需的某些方式.但是我认为语法感知变量突出显示超出了VIM的范围.

  • @Meysam - 你可以创建一个简单的映射,只做那个(未经测试):nmap <leader>**N. (2认同)

Tja*_*art 9

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

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

一个人会激活突出显示:

:let HlUnderCursor=1
Run Code Online (Sandbox Code Playgroud)

并禁用它:

:let HlUnderCursor=0
Run Code Online (Sandbox Code Playgroud)

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

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

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

:unlet HlUnderCursor
Run Code Online (Sandbox Code Playgroud)


Fun*_*ayu 6

如果你不想要突出语言的话(报表/ preprocs例如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()
Run Code Online (Sandbox Code Playgroud)


小智 5

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

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

根据描述:'这个脚本像许多IDE一样突出了光标下的单词.

干杯.