2010-10-18 22 views
2

Est-il possible d'utiliser toupper dans la chaîne de remplacement? On suppose, il y a des membres déclarations comme ceci:Comment utiliser le toupper de VIM dans une chaîne de remplacement?

int myVar; 

Je veux faire la première lettre du nom de la variable à une lettre majuscule:

int MyVar; 

Malheureusement, cela ne fonctionne pas:

:1,$s/\(\w\+\)\s\+\(\w\)\(\w*\)\s*;/\1 \=toupper(submatch(\2))\3;/ 

Enfin, je pourrais utiliser \ u pour ce faire:

:1,$s/\(\w\+\)\s\+\(\w\)\(\w*\)\s*;/\1 \u\2\3;/ 

Mais je suis toujours curieux si vous utilisez des fonctions comme toupper dans la chaîne de remplacement fonctionne?

Répondre

3

Essayez:

:1,$s/\(\w\+\)\s\+\(\w\)\(\w*\)\s*;/\=submatch(1)." ".toupper(submatch(2)).submatch(3).";"/ 
+0

Grand, ça marche! Merci beaucoup! Je vois, les chaînes doivent être entourées de "" et concaténées avec d'autres chaînes ou résultats de la fonction en utilisant le point. Merci beaucoup! –