Por ejemplo, quiero convertir "CamelCasedName" a "camel_cased_name". ¿Hay alguna manera de hacer esto en emacs?
Por ejemplo, quiero convertir "CamelCasedName" a "camel_cased_name". ¿Hay alguna manera de hacer esto en emacs?
Respuestas:
Este pequeño fragmento de código de esta página , con una función de contenedor y un guión bajo que reemplaza el guión por un guión bajo, podría convertirse fácilmente en un comando para hacerlo. (Compruebe que trata las tapas principales a su medida):
Ejemplo de código de EmacsLisp para quitar una CamelCase de una cadena (de http://www.friendsnippets.com/snippet/101/ ):
(defun un-camelcase-string (s &optional sep start)
"Convert CamelCase string S to lower case with word separator SEP.
Default for SEP is a hyphen \"-\".
If third argument START is non-nil, convert words after that
index in STRING."
(let ((case-fold-search nil))
(while (string-match "[A-Z]" s (or start 1))
(setq s (replace-match (concat (or sep "-")
(downcase (match-string 0 s)))
t nil s)))
(downcase s)))
Emacs tiene modo de gafas que muestra nombres de camello con guiones bajos en el medio. (Ver también http://www.emacswiki.org/emacs/GlassesMode ).
Si realmente desea cambiar el texto del archivo, M-x query-replace-regexp
probablemente sea adecuado.
Moritz Bunkus escribió una función elisp para alternar entre CamelCase y c_style
string-inflection
es más completa ahora: github.com/akicho8/string-inflection (nota que hay también string-inflection-camelize-lower
al cambio hello_world
a helloWorld
).
Solo para fines de visualización, puede usar esto:
M-x glasses-mode
Si quieres un script que realmente convierta el texto, imagino que tendrías que escribir algo de elisp. Esa pregunta se hace mejor en el desbordamiento de pila.
Pude hacer esto en todo un archivo rápidamente con solo una consulta reemplazar regexp .
El patrón de búsqueda es \([a-z]+\)\([A-Z]\)\([a-z]+\)
y el reemplazo es \1_\,(downcase \2)\3
.
El patrón de reemplazo usa elisp directamente en el patrón. Esto requiere Emacs 22 o posterior.
En el estilo de documentación de emacs:
M-C-% \([a-z]+\)\([A-Z]\)\([a-z]+\) RET \1_\,(downcase \2)\3