J'ai ligne de code comme celui-ci:groupes de capture Vim regex pour remplacer la chaîne de cas de chameau avec un espace vide à la fin
variableInCamelCase <- map["variableInCamelCase"]
je dois faire comme ceci:
variable_In_Camel_Case <- map["variableInCameCase"]
seulement le premier mot doit être converti, j'essaie de trouver une regex pour le faire, et je dois le faire dans Vim mais je ne peux pas. Un regex comme celui-ci:
var rex = /([A-Z])([A-Z])([a-z])|([a-z])([A-Z])/g;
"CSVFilesAreCoolButTXT".replace(rex, '$1$4_$2$3$5');
est pas bon parce que je dois le faire que sur le premier mot. De plus, j'en ai besoin pour VIM qui utilise une syntaxe spéciale pour capturer un groupe.
J'ai essayé quelque chose comme ceci: s/\(\l\)\(\u\)/\1_\2/g
, ce qui équivaut à ([a-z])([A-Z])
, mais je ne peux pas le mettre dans ou avec le ([A-Z])([A-Z])([a-z])
Il y a quelqu'un avec un bon vim prêt regex pour mon problème? Une explication serait la bienvenue également.
C'est le meilleur que je peux trouver jusqu'à présent. Malheureusement, il ajoute un '_' derrière le nom de la variable. Je réfléchis toujours à la possibilité de contourner cela. 's/\ v ([AZ]) ([AZ]) ([az]) | ([az]) ([AZ]) | (. * $)/\ 1 \ 4_ \ 2 \ 3 \ 5 \ 6/g' – eddiem
Ceci est une solution extrêmement hack, mais vous pouvez faire 'qq: s/\ v^\ w {-} \ a \ zs \ u/_ & @ qq @ q' –
DJMcMayhem
Tim Pope [abolir] (https : //github.com/tpope/vim-abolish) peut le faire pour vous. –