PopClip Change Case - el atajo definitivo para camelCase snake_case y compañía
Si escribes código, redactas para un CMS o trabajas con APIs, ya sabes el ritual: tienes una variable userFirstName y necesitas pasarla a user_first_name para una migración SQL, a USER_FIRST_NAME para una constante, a user-first-name para una URL, o a User First Name para un título. Lo haces a mano. O abres una web tipo Convert Case y pegas. O buscas un atajo en tu editor que solo cubre la mitad de los casos.
Por eso he construido JL Change Case: una extensión gratuita y open source para PopClip que convierte el texto seleccionado entre 21 estilos diferentes desde un único botón en el menú flotante.

Cómo se usa
Sección titulada «Cómo se usa»- Selecciona cualquier texto en cualquier app (Notas, VS Code, Mail, Safari, lo que sea).
- En el menú PopClip aparece el botón Change Case (icono
Aa). - Se abre un cuadro de diálogo nativo de macOS con las 21 opciones:

┌──────────────────────────┐│ JL Change Case ││ Select a transformation: ││ ││ camelCase ││ Capital Case ││ CONSTANT_CASE ││ dot.case ││ Header-Case ││ ... │└──────────────────────────┘- Eliges una y la selección se reemplaza in-place por la versión transformada. Cancelas y no toca nada.
Las 21 transformaciones
Sección titulada «Las 21 transformaciones»Tomando como ejemplo el texto helloWorld_foo-Bar:
| # | Estilo | Resultado |
|---|---|---|
| 1 | camelCase | helloWorldFooBar |
| 2 | Capital Case | Hello World Foo Bar |
| 3 | CONSTANT_CASE | HELLO_WORLD_FOO_BAR |
| 4 | dot.case | hello.world.foo.bar |
| 5 | Header-Case | Hello-World-Foo-Bar |
| 6 | lower case | hello world foo bar |
| 7 | lower First | helloWorld_foo-Bar (solo la primera letra) |
| 8 | no case | hello world foo bar |
| 9 | kebab-case | hello-world-foo-bar |
| 10 | KEBAB-UPPER-CASE | HELLO-WORLD-FOO-BAR |
| 11 | PascalCase | HelloWorldFooBar |
| 12 | Pascal_Snake_Case | Hello_World_Foo_Bar |
| 13 | path/case | hello/world/foo/bar |
| 14 | AlTeRnAtInG cAsE | HeLlOwOrLd FoO bAr |
| 15 | rAndOm cAsE | HelLOWoRLd foO BAr |
| 16 | Sentence case | Hello world foo bar |
| 17 | snake_case | hello_world_foo_bar |
| 18 | sWAP cASE | HELLO wORLD fOO bAR (invierte la capitalización original) |
| 19 | Title Case | Hello World Foo Bar |
| 20 | UPPER CASE | HELLO WORLD FOO BAR |
| 21 | Upper first | HelloWorld_foo-Bar (solo la primera letra) |
Cuándo viene bien cada una
Sección titulada «Cuándo viene bien cada una»- Programando:
camelCase,PascalCase,snake_case,kebab-case,CONSTANT_CASE,Pascal_Snake_Casecubren las convenciones de prácticamente todos los lenguajes mainstream (JavaScript, Python, Go, Rust, Ruby, etc.). - URLs y slugs:
kebab-casepara slugs amigables,path/casepara rutas. - Bases de datos y APIs:
snake_case(PostgreSQL/Ruby),camelCase(JavaScript/JSON),CONSTANT_CASE(env vars). - Documentación y prosa:
Sentence case,Title Case,Capital Case,Header-Case. - Limpieza rápida:
lower caseyUPPER CASEpara normalizar texto pegado. - Para reírse o despistar a un compañero:
AlTeRnAtInG cAsE,rAndOm cAsEysWAP cASE. Ya que están, las dejamos.
Cómo se instala
Sección titulada «Cómo se instala»-
Clona el repositorio o descarga el zip:
Ventana de terminal git clone https://github.com/usblsb/popclip-change-case.git -
Doble clic sobre la carpeta
JlChangeCase.popclipext. -
PopClip pregunta si quieres instalarla → confirmar.
No hay dependencias externas: la extensión solo usa herramientas que vienen con macOS (bash, osascript, python3). No instala nada en tu sistema y no requiere conexión a internet.
Detalles técnicos (para los curiosos)
Sección titulada «Detalles técnicos (para los curiosos)»- El algoritmo de separación de palabras es una reimplementación del que usa la popular librería
change-casede Blake Embrey: dos pasadas de regex insertan separadores en los límiteslowercase→Uppercasey dentro de runs de mayúsculas (HTTPSConnectionse separa correctamente enHTTPS,Connection). - Restaura el foco de la app original tras cerrar el diálogo. Sin este detalle, System Events (la app que abre el diálogo) quedaría como app frontmost y el
paste-resultde PopClip aterrizaría ahí en vez de en tu editor — provocando un molesto sonido “pop” sin pegar nada. Title Casesimplificado: capitaliza cada palabra. La versión “real” con palabras pequeñas en minúscula (a, an, the, of…) requeriría un diccionario; queda fuera del alcance de v1.lower First,Upper first,sWAP cASE,AlTeRnAtInG cAsEyrAndOm cAsEoperan carácter a carácter sobre el texto original sin pre-procesar, para preservar las posiciones.
Inspirado en la extensión Change Case de Raycast y en la librería change-case.
Enlaces
Sección titulada «Enlaces»- Repositorio (código + documentación + issues): github.com/usblsb/popclip-change-case
- PopClip: popclip.app
La extensión es MIT, sin telemetría, sin red, sin dependencias. Si la usas y echas en falta alguna transformación o pulir alguna, abre un issue en el repo.