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?Resalte la variable debajo del cursor en Vim como en NetBeans
Respuesta
Este AutoCommand va a hacer lo que quiere:
:autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))
Editar: He utilizado el grupo IncSearch
más destacado en mi ejemplo, pero se pueden encontrar otros colores a utilizar mediante la ejecución de este comando:
:so $VIMRUNTIME/syntax/hitest.vim
Si establece
:set hlsearch
para resaltar todas las apariciones de un patrón de búsqueda, y luego utilice *
o #
para encontrar ocurrencias de la palabra bajo el cursor, que les permite conocer de alguna manera a lo que desea. Sin embargo, creo que un resaltado de variable sensible a la sintaxis está más allá del alcance de VIM.
¡su solución es genial! el único problema es cuando uso * el cursor salta al siguiente resultado de búsqueda. ¿No es posible mantener el cursor en la palabra actual? – Meysam
@Meysam - puede crear una asignación simple que hace exactamente eso (no probado): nmap
Creo que lo que realmente quieres es el siguiente complemento de Shuhei Kubota:
http://www.vim.org/scripts/script.php?script_id=4306
De acuerdo con la descripción: 'Este script se destacan las palabras debajo del cursor como muchos entornos de desarrollo.'
Saludos.
Esta declaración permitirá una variable para activar/desactivar resaltando todas las apariciones de la palabra bajo el cursor:
:autocmd CursorMoved * exe exists("HlUnderCursor")?HlUnderCursor?printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\')):'match none':""
Uno podría activar destacando con:
:let HlUnderCursor=1
y desactivarlo con:
:let HlUnderCursor=0
Uno podría definir fácilmente una tecla de método abreviado para habilitar/deshabilitar ng resaltado:
:nnoremap <silent> <F3> :exe "let HlUnderCursor=exists(\"HlUnderCursor\")?HlUnderCursor*-1+1:1"<CR>
Eliminación de la variable que impediría la declaración partido de la ejecución, y no borrar el punto culminante actual:
:unlet HlUnderCursor
Si no desea resaltar palabras de la lengua (declaraciones/preprocs como if
, #define
) cuando el cursor está en estas palabras, se 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()
- 1. Ejecutar un comando debajo del cursor en VIM
- 2. Abrir URL debajo del cursor en Vim con el navegador
- 3. Posición del cursor en la abreviatura VIM
- 4. ¿Cómo especifico "la palabra debajo del cursor" en la línea de comandos de VIM?
- 5. Cómo buscar una cadena debajo del cursor en Eclipse
- 6. ¿Cómo obtener la palabra debajo del cursor?
- 7. Abrir archivo desde la ruta completa debajo del cursor en Vim
- 8. ¿Cómo obtener el nombre del grupo de resaltado debajo del cursor en vim?
- 9. búsqueda incremental de VIM, cómo copiar la cadena coincidente debajo del cursor?
- 10. ¿Hay un atajo para buscar la palabra debajo del cursor en Xcode?
- 11. VIM Resalte toda la línea actual
- 12. Vim: resalte todas las coincidencias en incsearch
- 13. jQuery: elemento resaltado debajo del cursor del mouse?
- 14. ViM: busque y resalte pero no salte
- 15. Cómo cambiar la forma del cursor vim en diferentes modos
- 16. VIM: Añadir espacios en la posición del cursor
- 17. Vim: resalte las líneas cambiadas
- 18. ¿Cómo cambiar la velocidad de parpadeo del cursor (cursor) en NetBeans?
- 19. ¿Cómo obtener el control debajo del cursor del mouse?
- 20. Resalte los argumentos en el cuerpo de la función en vim
- 21. Cómo asignar el cursor vim a cierta línea en la ventana y hacer que el texto se desplace por debajo de esa posición del cursor?
- 22. emacs: resalte la línea actual subrayándolo
- 23. vim restaura la posición del cursor; excluir archivos especiales
- 24. Pegar en Vim sin mover el cursor
- 25. Vim: Resalte la palabra TODO para cada tipo de archivo
- 26. ¿Cómo hago para que Vim resalte el paréntesis correspondiente?
- 27. no ¿Hay un 'VIM como Desert temático' para NetBeans
- 28. Simular clic del mouse/Detectar color debajo del cursor en Python
- 29. Cursor de salto/posición en Vim
- 30. Forma del cursor Vim dependiendo del modo actual
¿Hay alguna manera de silenciar los errores de coincidencia? – UncleZeiv
@UncleZeiv: No estoy muy seguro de lo que quiere decir con errores –
si muevo el cursor al final de un comentario de estilo C (estrella seguido de barra), obtengo 'E488: caracteres finales: coincida IncSearch/\ <*/\> ', e incluso tengo que presionar Enter antes de continuar, ¡bastante molesto! Supongo que debería escaparse de alguna manera y/o al menos estaría bien encontrar la manera de silenciar la advertencia. Gran consejo de todos modos. – UncleZeiv