Je veux utiliser des expressions régulières perl sur la ligne de commande vim. Par exemple, pour mettre en majuscule les mots de la ligne actuelle, vous pouvez taper:
:s/(\w+)/\u$1/g
Je veux utiliser des expressions régulières perl sur la ligne de commande vim. Par exemple, pour mettre en majuscule les mots de la ligne actuelle, vous pouvez taper:
:s/(\w+)/\u$1/g
Réponses:
Vous pouvez filtrer n'importe quelle ligne ou plage de lignes via une commande externe dans vim, en utilisant!. Par exemple, vous pouvez faire:
:.!perl -pe "s/(\w+)/\u\1/g"
qui filtrera la ligne actuelle via cette commande perl. (Ici :
pour entrer en mode ligne de commande, et ce .
qui suit signifie la ligne actuelle; vous pouvez également spécifier une plage de lignes ou %
pour tout le fichier, etc.)
Si vous souhaitez utiliser les modèles de substitution intégrés de vim, le plus proche sera d'utiliser l'option "très magique" de vim, \ v, comme ceci:
:s/\v(\w+)/\u\1/g
voir :help pattern
et :help substitute
pour plus de détails. Je ne pense pas que "très magique" soit tout à fait identique aux modèles de Perl, mais est très proche. Quoi qu'il en soit, vous pouvez toujours utiliser perl lui-même si vous êtes plus à l'aise avec lui, comme ci-dessus.
(
est traité spécialement alors qu'il {
ne l'est pas: "tous les caractères ASCII sauf '0' - '9', 'a' - 'z', 'A' - 'Z' et "_" a une signification particulière. " Merci!
Non, vous ne pouvez pas utiliser les expressions régulières Perl de cette façon. Pour obtenir de l'aide sur l'apprentissage des équivalents Vim pour les composants d'expression régulière Perl, consultez
:help perl-patterns
Cependant, vous pouvez utiliser Perl comme filtre externe comme expliqué par frabjous. Vous pouvez également exécuter des commandes Perl dans Vim à l'aide de l'interface Perl, si votre Vim a été compilé avec la +perl
fonctionnalité. Voir
:help if_perl.txt
:help perl-patterns
a résolu la seule chose que je détestais auparavant à propos de vim
Vous pouvez aussi utiliser:
/\v"your regex"
au lieu de:
/"your regex"
nnoremap / /\v
et vnoremap / /\v
à votre .vimrc afin que lorsque vous tapez, /
cela fonctionne.
Voici une solution de http://vim.wikia.com/wiki/Perl_compatible_regular_expressions
:perldo s/(\w+)/\u$1/g
(Vérifiez avec :ver
cela +perl
ou +perl/dyn
est compilé dans.)
Utilisez le plugin eregex.vim . C'est très utile et je n'ai eu aucun problème avec ça.