2009-04-03 11 views
3

J'ai besoin d'un code de script pour mettre en évidence "[Capítulo" et "]" et tout ce qui les sépare. Je vous remercie.Vim: besoin d'aide avec un petit code de script pour mettre en évidence

Je veux que cela fonctionne à chaque fois que j'ouvre, par exemple, un fichier .txt. Tout comme la mise en évidence du code.

+0

Si vous tapez /\[Capitulo.*\]/, que se passe-t-il? – ojblass

+0

Vous voulez aussi que le script soit bon? Clarifiez cela dans la question ou sinon chaque réponse sera la même! – ojblass

Répondre

5

est ici un moyen facile de le faire:

dans vim, assurez-vous que la coloration syntaxique est activée avec :syn on

exécutez la commande :highlight pour obtenir une liste de tous Mettez en surbrillance les noms de groupes et les exemples de ce à quoi ils ressemblent. Le groupe Error dirait qu'il se détache bien dans mon colorscheme, donc je vais utiliser dans mon exemple (mais vous pouvez utiliser l'un des autres noms, comme Todo ou Search)

:syntax match Error /\[Capítulo[^\]]*\]/ 

Ce modèle vous tiendra de goulument correspondant le plus gros morceau. Même si d'autres personnes suggèrent que vous utilisez l'expression régulière /\[Capítulo.*\]/ - ce n'est probablement pas ce que vous voulez, car il correspondra à tout ce qu'il y a entre deux s'il y en a deux ou plus sur une ligne.

Par exemple /\[Capítulo.*\]/ correspondront à cette ligne entière:

[Capítulo foo] ces mots ne doivent pas être mis en évidence [bar Capítulo]

Le même exemple, mais avec /\[Capítulo[^\]]*\]/ sera seul match à l'intérieur []:

[Capítulo foo] ces mots ne doivent pas être mis en évidence [bar Capítulo]

Avec des expressions régulières, il est un truc commun pour faire un groupe qui correspond à tout, mais le caractère que vous souhaitez mettre fin à votre match, au lieu d'utiliser la .* qui correspondra autant de caractères que possible. Dans ce cas, nous faisons le groupe [^\]]* - qui dit « tout match sauf]. »

Si cela fonctionne comme vous le souhaitez, ajoutez la ligne de correspondance de syntaxe sans « : » à votre .vimrc

+0

Une autre option pour éviter le crochet de fermeture est d'utiliser une correspondance non gourmande: /\[Capítulo.\{-}\]/. \ {-} Vim est-il équivalent à Perl *? opérateur et dit match zéro ou plus, aussi peu que possible. – DrAl

1

Une expression régulière est ce que vous cherchez:

type / pour entrer en mode "recherche" et tapez:

\[Capítulo.*\]/
+0

alors vous devez activer la surbrillance: set hls –