Cambiare maiuscole e minuscole in VS Code: scorciatoie ed estensioni

VS Code ha sette comandi integrati per convertire maiuscole e minuscole: Transform to Uppercase, Lowercase, Title Case, Snake Case, Camel Case, Kebab Case e Pascal Case. Seleziona del testo, apri la Command Palette con Ctrl+Shift+P (Cmd+Shift+P su Mac), scrivi “transform” e scegline uno. Nessuno ha una scorciatoia da tastiera predefinita, quindi se li usi spesso associane una tua in keybindings.json. Qui sotto trovi tutto il necessario.
I comandi hanno alcune stranezze da conoscere prima di lanciarli su un intero file, quindi vedremo cosa fa davvero ciascuno, poi le scorciatoie, poi i due trucchi che colmano le lacune: la sostituzione con regex e le trasformazioni negli snippet. Le estensioni vengono per ultime, perché forse non te ne serve nessuna.
I comandi integrati di VS Code per maiuscole e minuscole
L'elenco è cresciuto negli anni. Se un comando manca nella tua palette, controlla la versione in Help, About (Code, About su Mac).
| Nome nella Command Palette | ID del comando | Dalla versione |
|---|---|---|
| Transform to Uppercase | editor.action.transformToUppercase | Da molto tempo |
| Transform to Lowercase | editor.action.transformToLowercase | Da molto tempo |
| Transform to Title Case | editor.action.transformToTitlecase | 1.34 |
| Transform to Snake Case | editor.action.transformToSnakecase | 1.53 |
| Transform to Kebab Case | editor.action.transformToKebabcase | 1.69 |
| Transform to Camel Case | editor.action.transformToCamelcase | 1.75 |
| Transform to Pascal Case | editor.action.transformToPascalcase | 1.88 |
Guarda bene gli ID: è transformToSnakecase con la c minuscola, non transformToSnakeCase. Copiali esattamente quando scrivi le associazioni di tasti, altrimenti la scorciatoia non farà nulla, senza alcun avviso.
Due comportamenti rendono questi comandi più comodi di quanto sembrino all'inizio. Se non c'è nulla di selezionato, un comando converte la parola sotto il cursore, quindi puoi cliccare dentro userId ed eseguire Snake Case senza selezionare niente. E con più cursori o più selezioni, ciascuno viene convertito separatamente.
Cosa fa davvero ciascun comando
I comandi dividono le parole in modi diversi tra loro, ed è facile non accorgersene. Ecco cosa producono nelle versioni attuali (abbiamo controllato il codice sorgente di VS Code):
| Input | Snake | Kebab | Camel | Pascal | Title |
|---|---|---|---|---|---|
hello world | hello world | hello world | helloWorld | HelloWorld | Hello World |
userID | user_id | user-id | userID | UserID | Userid |
USER_ID | user_id | user-id | USERID | UserId | User_Id |
XMLHttpRequest | xml_http_request | xml-http-request | XMLHttpRequest | XMLHttpRequest | Xmlhttprequest |
Gli schemi dietro la tabella:
- Snake Case e Kebab Case dividono le parole solo dove cambiano le maiuscole/minuscole. Gestiscono bene le sigle, ma gli spazi restano spazi, quindi
hello worldviene solo messo in minuscolo. Kebab Case trasforma anche i trattini bassi in trattini; Snake Case non tocca i trattini. - Camel Case e Pascal Case dividono su spazi, trattini bassi e trattini e mettono la maiuscola a ogni pezzo, ma Camel Case non mette in minuscolo il resto della parola. Per questo
USER_IDdiventaUSERID. Pascal Case invece normalizza le parole tutte in maiuscolo e dàUserId. (Non sai quale dei due vuole il tuo codice? Leggi la nostra guida a camelCase e PascalCase.) - Title Case mette la maiuscola a ogni parola, comprese quelle piccole, e mette in minuscolo tutto il resto:
the lord of the ringsdiventaThe Lord Of The Rings. È pensato per correzioni rapide, non per i titoli in inglese. Gli apostrofi sono gestiti con buon senso:don'tdiventaDon't.
Quindi, per trasformare una frase come Shipping Address Line 2 in snake_case, esegui prima Camel Case e poi Snake Case, e ottieni shipping_address_line2. Oppure incollala nel nostro convertitore di maiuscole/minuscole, che divide su spazi, punteggiatura e cambi di maiuscola/minuscola in un solo passaggio e offre anche CONSTANT_CASE, che VS Code non ha.
Aggiungere scorciatoie da tastiera in keybindings.json
Per una o due scorciatoie basta l'editor Keyboard Shortcuts: premi Ctrl+K poi Ctrl+S (Cmd+K Cmd+S su Mac), cerca “transform”, fai doppio clic su un comando e premi i tasti che vuoi. Per l'intero set è più rapido modificare il file. Esegui Preferences: Open Keyboard Shortcuts (JSON) dalla Command Palette e aggiungi queste voci dentro le parentesi quadre:
{ "key": "ctrl+k shift+u", "command": "editor.action.transformToUppercase", "when": "editorTextFocus" },
{ "key": "ctrl+k shift+l", "command": "editor.action.transformToLowercase", "when": "editorTextFocus" },
{ "key": "ctrl+k shift+t", "command": "editor.action.transformToTitlecase", "when": "editorTextFocus" },
{ "key": "ctrl+k shift+s", "command": "editor.action.transformToSnakecase", "when": "editorTextFocus" },
{ "key": "ctrl+k shift+c", "command": "editor.action.transformToCamelcase", "when": "editorTextFocus" },
{ "key": "ctrl+k shift+p", "command": "editor.action.transformToPascalcase", "when": "editorTextFocus" },
{ "key": "ctrl+k shift+k", "command": "editor.action.transformToKebabcase", "when": "editorTextFocus" }Sono chord, cioè combinazioni in due tempi: premi Ctrl+K, rilascia, poi premi Shift+U. Abbiamo scelto il prefisso Ctrl+K perché VS Code lo usa già per i comandi dell'editor e nessuno di questi sette chord è occupato da un'associazione predefinita nelle versioni attuali. Su Mac scrivi cmd+k invece di ctrl+k. Non tenere lì ctrl+k: su macOS è associato a Delete All Right, e un chord che inizia con quel tasto creerebbe problemi. Se una scorciatoia smette di funzionare, probabilmente un'estensione ha preso gli stessi tasti; cercali nell'editor Keyboard Shortcuts per scoprire quale.
Sostituzione con regex e cambi di maiuscole/minuscole
Per modifiche su un intero file o su tutto il progetto usa la sostituzione con le espressioni regolari. Apri la sostituzione con Ctrl+H (Cmd+Option+F su Mac), attiva le regex con Alt+R (Cmd+Option+R) e usa \u, \U, \l o \L davanti a un gruppo. Cercando _([a-z]) e sostituendo con \U$1, user_id diventa userId. Lo stesso funziona in Replace in Files (Ctrl+Shift+H, oppure Cmd+Shift+H).
Una differenza rispetto a sed e Perl manda in confusione molte persone: in VS Code ogni escape vale solo per il gruppo successivo, quindi \U$1_$2 mette in maiuscolo $1 e lascia stare $2, e non esiste \E. La nostra guida rapida alle regex per convertire maiuscole e minuscole contiene ricette testate e un confronto con altri strumenti.
Trasformazioni negli snippet: uno snake_case che gestisce gli spazi
Anche gli snippet possono trasformare il testo e, dalla versione 1.108 di VS Code, le loro opzioni di formato includono /snakecase e /kebabcase accanto alle più vecchie /upcase, /downcase, /capitalize, /camelcase e /pascalcase. Il loro snake_case segue regole diverse da quelle del comando: trasforma spazi e trattini in trattini bassi. Associalo a un tasto con editor.action.insertSnippet e sostituirà la selezione:
{
"key": "ctrl+k shift+n",
"command": "editor.action.insertSnippet",
"when": "editorTextFocus && editorHasSelection",
"args": { "snippet": "${TM_SELECTED_TEXT/(.*)/${1:/snakecase}/}" }
}Seleziona Shipping Address Line 2, premi i tasti e ottieni shipping_address_line_2. Il compromesso riguarda le sigle: questa versione trasforma XMLHttpRequest in xmlhttp_request, mentre il comando integrato lo gestisce bene. Converte inoltre solo la prima riga di una selezione su più righe, perché . non corrisponde agli a capo. Sostituisci con /kebabcase per avere la versione kebab.
Estensioni per tutto il resto
Le funzioni integrate non coprono CONSTANT_CASE, dot.case, path/case né l'inversione di maiuscole e minuscole. Due estensioni popolari sì:
- change-case (editore wmaurer) si basa sulla libreria JavaScript change-case. Aggiunge comandi per camel, constant, dot, kebab, lower, lowerFirst, no, param, pascal, path, sentence, snake, swap, title, upper e upperFirst, più un selettore Change Case Commands che mostra l'anteprima di ogni risultato quando è selezionata una sola parola.
- Text Power Tools (di Dániel Tar) è una cassetta degli attrezzi più ampia, con più di 240 comandi per il testo. La conversione di maiuscole e minuscole ne è una parte e copre camelCase, PascalCase, snake_case, CONSTANT_CASE, dash-case, dot.case e Title Case, accanto a filtro e ordinamento delle righe e sequenze di numeri.
Il nostro parere: se ti servono solo i sette stili integrati, salta l'estensione e associa i tasti. Se CONSTANT_CASE ti capita ogni giorno, installa change-case, perché un solo comando vale più di Snake Case seguito da Uppercase.
Una rapida checklist di configurazione: verifica di avere la versione 1.88 o successiva, così esistono tutti e sette i comandi; incolla le sette associazioni di tasti (con cmd+k su Mac); aggiungi l'associazione dello snippet se converti spesso delle frasi; e usa un vero strumento per lo stile Titolo quando scrivi titoli in inglese.


