J'ai travaillé dans NetBeans et j'ai aimé cette fonctionnalité: lorsque vous placez le curseur dans un nom de variable, toutes les occurrences de la variable sont mises en surbrillance. Ceci est très utile pour rechercher rapidement toutes les occurrences de la variable. Est-il possible d'ajouter ce comportement à Vim?Mettez en surbrillance variable sous le curseur dans Vim comme dans NetBeans
Répondre
Ce autocommand fera ce que vous voulez:
:autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))
Edit: J'ai utilisé le groupe fort IncSearch
dans mon exemple, mais vous pouvez trouver d'autres couleurs à utiliser en exécutant cette commande:
:so $VIMRUNTIME/syntax/hitest.vim
Si vous définissez
:set hlsearch
pour mettre en évidence toutes les occurrences d'un modèle de recherche, puis utilisez *
ou #
pour trouver les occurrences du mot sous le curseur, que vous obtiendrez une certaine façon à ce que vous voulez. Cependant, je pense qu'une mise en surbrillance de variables prenant en compte la syntaxe dépasse la portée de VIM.
votre solution est géniale! le seul problème est quand j'utilise * le curseur saute au prochain résultat de recherche. N'est-il pas possible de garder le curseur sur le mot courant? – Meysam
@Meysam - vous pouvez créer un mappage simple qui ne fait que cela (non testé): nmap
Je pense que ce que vous voulez vraiment, c'est le plugin suivant par Shuhei Kubota:
http://www.vim.org/scripts/script.php?script_id=4306
Selon la description: 'Ce script met en évidence les mots sous le curseur comme beaucoup IDEs.'
Cheers.
Cette déclaration permettra une variable pour activer/désactiver la surbrillance toutes les occurrences du mot sous le curseur:
:autocmd CursorMoved * exe exists("HlUnderCursor")?HlUnderCursor?printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\')):'match none':""
Un activerait mettant en lumière avec:
:let HlUnderCursor=1
Et le désactiver avec:
:let HlUnderCursor=0
On pourrait facilement définir une touche de raccourci pour activer/désactiver ng mise en évidence:
:nnoremap <silent> <F3> :exe "let HlUnderCursor=exists(\"HlUnderCursor\")?HlUnderCursor*-1+1:1"<CR>
Supprimer la variable empêcherait l'instruction de correspondance de l'exécution, et non effacer le point fort courant:
:unlet HlUnderCursor
Si vous ne voulez pas mettre en évidence les mots de la langue (états/preprocs tels que if
, #define
) lorsque votre curseur est sur ces mots, vous pouvez mettre cette fonction dans votre .vimrc
en fonction de la réponse @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. onglet Mettez en surbrillance dans le menu
- 2. Mettez en surbrillance NSToolbarItems
- 3. Mettez en surbrillance toutes les références à X?
- 4. Mettez en surbrillance un élément dans Open Flash Chart 2
- 5. Coller dans Vim sans déplacer le curseur
- 6. Mettez en surbrillance le texte d'une page après son rendu
- 7. Mettez en surbrillance les mots spécifiés par l'utilisateur dans Visual Studio?
- 8. vim Mise en surbrillance sur le bord droit de l'écran
- 9. Sous-domaine comme variable dans mod_rewrite
- 10. Comment remplacer la syntaxe par défaut en surbrillance dans vim?
- 11. Vim - mettre en surbrillance les lignes modifiées
- 12. Mettez en surbrillance une liste de mots en utilisant une expression régulière dans C#
- 13. Mettez en surbrillance du texte dans une visionneuse de rapports Jasper
- 14. Mise en surbrillance du code dans Resharper
- 15. Comment désactiver la surbrillance de recherche Vim
- 16. Mettez en surbrillance le contrôle Win32 Edit pour indiquer qu'il est à remplir maintenant
- 17. OPENQUERY avec une variable dans un curseur
- 18. Certains fichiers sont affichés comme ignorés dans NetBeans
- 19. Mettez la chaîne dans un tableau multidimensionnel et trier puis par sous-valeur dans le tableau
- 20. Obtenir la police sous le curseur dans Emacs
- 21. Qwidget, comment mettre en évidence le widget sous le curseur
- 22. Comment désactiver la surbrillance de la ligne en cours dans NetBeans?
- 23. Dans emacs, comment mettre en surbrillance la ligne en cours dans le cadre actuel uniquement?
- 24. comportement Eclipse dans Netbeans
- 25. Comment puis-je obtenir le mot sous le curseur et le texte de la ligne en cours dans le script vim?
- 26. Dans VIM: Comment surligner "variables locales" dans un fichier "C"
- 27. Ouverture (c) des tags dans le nouvel onglet (G) Vim
- 28. en utilisant les boutons dans le cadre de gui netbeans
- 29. en utilisant rmic dans netbeans
- 30. Configuration de l'espacement des tabs de largeur variable dans Vim
est-il un moyen de faire taire les erreurs de correspondance? – UncleZeiv
@UncleZeiv: Je ne suis pas sûr de ce que vous entendez par des erreurs –
si je déplace le curseur sur la fin d'un commentaire de style C (étoile suivie par une barre oblique), je reçois 'E488: Caractères surnuméraires: correspondre IncSearch/\ <*/\> ', et je dois même appuyer sur Entrée avant de continuer, assez ennuyeux! Je suppose qu'il devrait être échappé d'une manière ou d'une autre et/ou au moins, il serait acceptable de trouver un moyen de faire taire l'avertissement. Bon conseil quand même. – UncleZeiv