2017-07-26 1 views
4

Dans gvim (v8) regexp, nous pouvons spécifier un point dans la région sélectionnée avec \%V, e.g. s/\%Vabc/xyz/. Cependant, \%V correspond n'importe où dans la sélection, je veux quelque chose pour correspondre seulement au début ou à la fin de la sélection visuelle (marques <,>).vim correspond à une marque dans regexp

De plus, cette expression rationnelle /\%V\_.*\%V/ ne sélectionne pas le caractère final de la région. \%V est censé être de largeur nulle?

Alors, comment puis-je préciser la position d'une marque, comme dans:

:s/\mark( <). \ zs (abc) \ ze \ marque. (>)/xyz/`

Répondre

2

Oui, \%V est de largeur nulle; pour inclure le dernier caractère sélectionné, vous devez ajouter un . pour inclure le dernier caractère: /\%V\_.*\%V./

Il existe des atomes spéciaux pour les positions de marques; vous pouvez les utiliser avec les marques '<,'>, aussi: /\%'<.*\%'>./. Comme ils sont à largeur nulle, ce qui précède s'applique aussi, donc ce n'est pas une meilleure alternative.