web-dev-qa-db-fra.com

Dans Intellij, comment basculer entre étui camel et trait de soulignement espacé?

Dans mon entreprise, nous avons deux guides de style différents pour Java vs sql. Dans Java j'ai un champ nommé historyOfPresentIllness et 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?

Pendant que je demande, je peux tout aussi bien demander s'il existe un moyen de transformer historyOfPresentIllness en history-of-present-illness. C'est de Java au style clojure.

88
Daniel Kaplan

Très simple, appuyez sur Clr + F Pour ouvrir Rechercher/Remplacer panneau et vérifier [✓] Regex copier le regex passé

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

Remplacer:\U$1

Appuyez sur le bouton [Remplacer tout], profitez


Merci @piotrek pour _some_awe_var À _someAweVar

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

27
Qamar

La réponse ci-dessus est presque parfaite, mais notez que cela va changer des variables comme _something ou this._something en Something et this.Something. Je ne voulais pas cela dans mon cas, car le premier _ était utilisé pour désigner les variables "privées" (ancien projet JS). J'ai légèrement modifié cette approche:

Rechercher: (\ w) [_] {1,1} ([a-z])

Remplacer: $ 1\U $ 2

Cela garantira que seules les variables avec _ est au milieu sera affecté.

2
piotrek

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
1
Theodore R. Smith

Si vous êtes d'accord avec PyCharm refactorisant également les usages, lancez l'outil "Renommer" (Refactor> Rename). 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 snake_case avec des touches pour que cela puisse être assez rapide).

0
Rafe