Dans Intellij, comment basculer entre la case camel et le trait de soulignement espacé?

109

Dans mon entreprise, nous avons deux guides de style différents pour java vs sql. En java, j'ai un champ nommé historyOfPresentIllnesset quand j'écris le sql, je veux le nommer history_of_present_illness. Existe-t-il un raccourci clavier pour passer de l'un à l'autre lorsque la phrase est en surbrillance? Ou peut-être un plugin qui peut le faire?

Alors que je demande, je peux aussi bien demander s'il y a un moyen de tourner historyOfPresentIllnessà history-of-present-illness. Cela va du style java au style clojure.

Daniel Kaplan
la source

Réponses:

186

J'utilise un plugin appelé String Manipulation qui a les capacités que vous recherchez (et plus).

Sélectionnez historyOfPresentIllnesset appuyez sur Alt+ Mpour afficher le menu du plugin, puis appuyez sur:

  • 5- En snake_case (ou en camelCase) qui se convertit enhistory_of_present_illness
  • 6 - En hyphen-case (ou en snake_case) qui se convertit enhistory-of-present-illness

Pour rendre cela plus facile, vous pouvez configurer un raccourci sur File | Settings | Keymap.


Une recherche rapide dans le référentiel de plugins pour "camel" a montré un plugin appelé CamelCase qui fait exactement ce que vous recherchez avec SHIFT+ ALT+ Uen basculant entre différents formats:

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

Cependant, après l'avoir essayé, il semble y avoir un bogue avec ce plugin qui vous empêche d'annuler les modifications. Mise à jour: il semble que ce bogue ait été corrigé depuis un certain temps maintenant, donc le plugin CamelCase est probablement la voie à suivre.

DannyMo
la source
1
@tieTYT Oui, c'est assez ennuyeux parce que vous obtenez un message contextuel vous indiquant que le fichier a des changements qui ne peuvent pas être annulés ... sinon, cela aurait été le choix le plus pratique.
DannyMo
2
@tieTYT Je viens de penser que pour simplifier la première approche, vous pouvez enregistrer une macro Edit > Macros > Start recording macro, puis ajouter un simple mappage de touches pour votre macroSettings > Keymap > Macros > YourMacro (right-click > Add Keyboard Shortcut)
DannyMo
La manipulation de chaînes contient maintenant également des actions pour basculer entre toutes sortes de cas ... Vous pouvez configurer un raccourci vers n'importe quelle action (il y en a trop pour avoir des valeurs par défaut).
Meo
@DannyMo - Pour moi, c'est 5pour SCREAMING_SNAKE_CASEet Jc'est pour Trim all spaces. Avec Mac OS X 10.10.5, PhpStorm 10.0.1, String Manipulation 4.1.135.445.1.
Pang
Je peux confirmer que le plugin CamelCase fonctionne bien avec IntelliJ 2016.2.3
Wim Deblauwe
45

Appuyez très simplement Clr + Fpour ouvrir le panneau Rechercher / Remplacer et cocher [✓] Regex copier après regex

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

Remplacer: \U$1

Appuyez sur le bouton [Remplacer tout], profitez


Merci pour @piotrek _some_awe_varà_someAweVar

Utilisez Rechercher: (\w)[_]{1,1}([a-z])
Remplacer:$1\U$2

Qamar
la source
2
Juste pour être complet, de camelCase à snake_case: rechercher ([A-Z]{1,1})et remplacer par _\l$1, avec les options Regex et Match case basculées.
dic19
C'est génial, mais dans TypeScript, les membres privés commencent souvent par un _et cela les fera commencer en majuscules.
Stack Underflow
1
@StackUnderflow utilise Rechercher: (\w)[_]{1,1}([a-z]) Remplacer: $1\U$2
Qamar
7

De snake_case à CamelCase

  • Trouver: (\w)[_]{1,1}([a-z])
  • Remplacer: $1\U$2
  • Paramètres:
    • Cas de correspondance
    • Regex

De CamelCase à snake_case:

  • Trouver: ([A-Z])
  • Remplacer: \_\L$1
  • Paramètres:
    • Cas de correspondance
    • Regex
Théodore R. Smith
la source
3

La réponse ci-dessus est presque parfaite, mais notez qu'elle changera des variables comme _somethingou this._somethingen Somethinget this.Something. Je ne voulais pas cela dans mon cas, car le début _ était utilisé pour désigner des variables "privées" (ancien projet JS). J'ai légèrement modifié cette approche:

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

Remplacer: $ 1 \ U $ 2

Cela garantira que seules les variables avec _est au milieu seront affectées.

piotrek
la source
1
"au-dessus" n'a pas de sens car les réponses peuvent être triées - votre "au-dessus" n'est pas le "au-dessus" de tout le monde, alors évitez d'utiliser "au-dessus" ou "ci-dessous" pour décrire le contenu de ce site, à la place, donnez le nom de l'auteur, merci
Eric Aya
La réponse "ci-dessus" référencée est @Qamar
Stack
0

Si vous êtes d'accord avec PyCharm pour refactoriser également les usages, lancez l'outil "Renommer" (Refactor> Renommer). La fenêtre apparaît avec une liste déroulante et vous devriez voir la version snake_case du texte dans la liste (vous pouvez ouvrir la fenêtre et basculer vers le snake_case avec des touches pour que cela puisse être assez rapide).

Rafe
la source