Resalte la variable debajo del cursor en Vim como en NetBeans
highlight (5)
Trabajé en NetBeans y me gustó esta característica: cuando coloca el cursor en un nombre de variable, todas las ocurrencias de la variable se resaltan. Esto es muy útil para buscar rápidamente todas las ocurrencias de la variable. ¿Es posible agregar este comportamiento a Vim?
Creo que lo que realmente quieres es el siguiente complemento de Shuhei Kubota:
http://www.vim.org/scripts/script.php?script_id=4306
Según la descripción: ''Esta secuencia de comandos resalta las palabras debajo del cursor como muchos IDEs.''
Aclamaciones.
Esta declaración permitirá que una variable se habilite / deshabilite resaltando todas las ocurrencias de la palabra debajo del cursor:
:autocmd CursorMoved * exe exists("HlUnderCursor")?HlUnderCursor?printf(''match IncSearch //V/<%s/>/'', escape(expand(''<cword>''), ''//')):''match none'':""
Uno activaría el resaltado con:
:let HlUnderCursor=1
Y deshabilitarlo con:
:let HlUnderCursor=0
Uno podría definir fácilmente una tecla de método abreviado para habilitar / deshabilitar el resaltado:
:nnoremap <silent> <F3> :exe "let HlUnderCursor=exists(/"HlUnderCursor/")?HlUnderCursor*-1+1:1"<CR>
Eliminar la variable evitaría la ejecución de la declaración de coincidencia y no borraría el resaltado actual:
:unlet HlUnderCursor
Este autocomando hará lo que quieras:
:autocmd CursorMoved * exe printf(''match IncSearch //V/<%s/>/'', escape(expand(''<cword>''), ''//'))
Editar: He utilizado el grupo de resaltado IncSearch
en mi ejemplo, pero puede encontrar otros colores para usar ejecutando este comando:
:so $VIMRUNTIME/syntax/hitest.vim
Si configura
:set hlsearch
para resaltar todas las apariciones de un patrón de búsqueda, y luego use *
o #
para encontrar las apariciones de la palabra debajo del cursor, que le llevará de la forma que desee. Sin embargo, creo que un resaltado de variable sensible a la sintaxis está más allá del alcance de VIM.
Si no desea resaltar palabras de lenguaje (declaraciones / preprocesos como if
, #define
) cuando el cursor está en estas palabras, puede poner esta función en su .vimrc
basado en la respuesta @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()