In Intellij, come faccio a passare dalla maiuscola alla sottolineatura e viceversa?


109

Nella mia azienda abbiamo due diverse guide di stile per java vs sql. In java ho un campo denominato historyOfPresentIllnesse quando scrivo sql, voglio chiamarlo history_of_present_illness. C'è una scorciatoia da tastiera per passare dall'una all'altra quando ho la frase evidenziata? O forse un plugin in grado di farlo?

Mentre sto chiedendo, posso anche chiedere se c'è un modo per trasformare historyOfPresentIllnessa history-of-present-illness. Questo va dallo stile java allo stile clojure.

Risposte:


186

Uso un plugin chiamato String Manipulation che ha le funzionalità che stai cercando (e altro).

Seleziona historyOfPresentIllnesse premi Alt+ Mper visualizzare il menu del plugin, quindi premi:

  • 5- To snake_case (o camelCase) che converte inhistory_of_present_illness
  • 6 - In trattino-maiuscolo (o in snake_case) che converte inhistory-of-present-illness

Per semplificare l'operazione, puoi impostare una scorciatoia su File | Settings | Keymap.


Una rapida ricerca nel repository dei plugin per "cammello" ha mostrato un plugin chiamato CamelCase che fa esattamente quello che stai cercando con SHIFT+ ALT+ Ualternando tra vari formati:

historyOfPresentIllness-> history_of_present_illness-> HISTORY_OF_PRESENT_ILLNESS-> HistoryOfPresentIllness->historyOfPresentIllness

Tuttavia, dopo averlo provato, sembra esserci un bug con questo plugin che ti impedisce di annullare qualsiasi modifica. Aggiornamento: sembra che questo bug sia stato corretto da un po 'di tempo, quindi il plugin CamelCase è probabilmente la strada da percorrere.


1
@tieTYT Sì, è piuttosto fastidioso perché ricevi un messaggio pop-up che ti dice che il file ha modifiche che non possono essere annullate ... se non fosse stato per quello, sarebbe stata la scelta più conveniente.
DannyMo

2
@tieTYT Mi è appena venuto in mente che per semplificare il primo approccio, potresti registrare una macro Edit > Macros > Start recording macroe quindi aggiungere una semplice mappatura dei tasti per la tua macroSettings > Keymap > Macros > YourMacro (right-click > Add Keyboard Shortcut)
DannyMo

La manipolazione delle stringhe ora contiene anche azioni per alternare tra tutti i tipi di casi ... Puoi impostare una scorciatoia per qualsiasi azione (ce ne sono troppe per avere qualche impostazione predefinita).
Meo

@DannyMo - Per me, è 5per SCREAMING_SNAKE_CASEe Jè per Trim all spaces. Utilizzando Mac OS X 10.10.5, PhpStorm 10.0.1, String Manipulation 4.1.135.445.1.
Pang

Posso confermare che il plug-in CamelCase funziona bene con IntelliJ 2016.2.3
Wim Deblauwe

45

Premi molto semplicemente Clr + Fper aprire il pannello Trova / Sostituisci e seleziona [✓] Copia regex dopo l'espressione regolare

Trova: [_]{1,1}([a-z])

Sostituire: \U$1

Premere il pulsante [Sostituisci tutto], Divertiti


Grazie @piotrek per _some_awe_vara_someAweVar

Usa Trova: (\w)[_]{1,1}([a-z])
Sostituisci:$1\U$2


2
Solo per completezza, da camelCase a snake_case: trova ([A-Z]{1,1})e sostituisci con _\l$1, con entrambe le opzioni Regex e Match case attivate.
dic19

Questo è fantastico, ma in TypeScript, spesso i membri privati ​​iniziano con un _e questo li farà iniziare in maiuscolo.
Stack Underflow

1
@StackUnderflow usa Trova: (\w)[_]{1,1}([a-z]) Sostituisci: $1\U$2
Qamar

7

Da snake_case a CamelCase

  • Trova: (\w)[_]{1,1}([a-z])
  • Sostituire: $1\U$2
  • Impostazioni:
    • Match Case
    • regex

Da CamelCase a snake_case:

  • Trova: ([A-Z])
  • Sostituire: \_\L$1
  • Impostazioni:
    • Match Case
    • regex

3

La risposta sopra è quasi perfetta, ma nota che cambierà variabili come _somethingo this._somethingin Somethinge this.Something. Non lo volevo nel mio caso, poiché la _ iniziale era usata per denotare variabili "private" (vecchio progetto JS). Ho leggermente modificato questo approccio:

Trova: (\ w) [_] {1,1} ([az])

Sostituisci: $ 1 \ U $ 2

Ciò garantirà che _saranno influenzate solo le variabili con è nel mezzo.


1
"sopra" non ha significato perché le risposte possono essere ordinate - il tuo "sopra" non è "sopra" per tutti, quindi evita di utilizzare "sopra" o "sotto" per descrivere i contenuti di questo sito, ma dai il nome dell'autore, grazie
Eric Aya

La risposta "sopra" a cui si fa riferimento è @Qamar
Stack Underflow

0

Se sei d'accordo con PyCharm anche nel refactoring degli usi, lancia lo strumento "Rename" (Refactoring> Rename). La finestra si apre con un elenco a discesa e dovresti vedere la versione snake_case del testo nell'elenco (puoi aprire la finestra e passare a snake_case premendo i tasti in modo che possa essere abbastanza veloce).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.