Wie kann ich in Intellij zwischen Kamelkoffer und Unterstrich wechseln?

108

In meiner Firma haben wir zwei verschiedene Styleguides für Java vs SQL. In Java habe ich ein Feld mit dem Namen historyOfPresentIllnessund wenn ich das SQL schreibe, möchte ich es benennen history_of_present_illness. Gibt es eine Tastenkombination zum Wechseln von einer zur anderen, wenn ich die Phrase hervorgehoben habe? Oder vielleicht ein Plugin, das das kann?

Während ich frage, kann ich auch fragen, ob es einen Weg gibt, mich historyOfPresentIllnesszu wenden history-of-present-illness. Das ist von Java bis Clojure-Stil.

Daniel Kaplan
quelle

Antworten:

185

Ich verwende ein Plugin namens String Manipulation, das die Funktionen bietet, nach denen Sie suchen (und mehr).

Wählen Sie historyOfPresentIllnessund drücken Sie Alt+ M, um das Plugin-Menü aufzurufen. Drücken Sie dann:

  • 5- Zu snake_case (oder zu camelCase), das in konvertiert wirdhistory_of_present_illness
  • 6 - Zum Bindestrich (oder zum Schlangenfall), der in konvertiert wirdhistory-of-present-illness

Um dies zu vereinfachen, können Sie eine Verknüpfung unter einrichten File | Settings | Keymap.


Eine schnelle Suche der Plugin - Repository für „Kamel“ zeigte ein Plugin namens Camelcase , das genau das tut , was Sie suchen mit SHIFT+ ALT+ Uvon zwischen verschiedenen Formaten Makeln:

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

Nach dem Ausprobieren scheint es jedoch einen Fehler mit diesem Plugin zu geben, der Sie daran hindert, Änderungen rückgängig zu machen. Update: Es scheint, dass dieser Fehler bereits seit einiger Zeit behoben ist, daher ist das CamelCase-Plugin wahrscheinlich der richtige Weg.

DannyMo
quelle
1
@tieTYT Ja, es ist ziemlich ärgerlich, weil Sie eine Popup-Nachricht erhalten, die Sie darüber informiert, dass die Datei Änderungen enthält, die nicht rückgängig gemacht werden können. Andernfalls wäre dies die bequemere Wahl gewesen.
DannyMo
2
@tieTYT Mir ist gerade eingefallen, dass Sie zur Vereinfachung des ersten Ansatzes ein Makro aufzeichnen Edit > Macros > Start recording macround dann eine einfache Schlüsselzuordnung für Ihr Makro hinzufügen könntenSettings > Keymap > Macros > YourMacro (right-click > Add Keyboard Shortcut)
DannyMo
Die Zeichenfolgenmanipulation enthält jetzt auch Aktionen zum Umschalten zwischen allen Arten von Fällen ... Sie können eine Verknüpfung zu jeder Aktion einrichten (es gibt zu viele, um eine Standardeinstellung zu haben).
Meo
@DannyMo - Für mich ist es 5für SCREAMING_SNAKE_CASEund Jist für Trim all spaces. Unter Mac OS X 10.10.5, PhpStorm 10.0.1, String Manipulation 4.1.135.445.1.
Pang
Ich kann bestätigen, dass das CamelCase-Plugin mit IntelliJ 2016.2.3
Wim Deblauwe
45

Drücken Sie ganz einfach Clr + F, um das Bedienfeld Suchen / Ersetzen zu öffnen , und aktivieren Sie [✓] Regex- Kopie nach Regex

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

Ersetzen: \U$1

Drücken Sie die Taste [Alle ersetzen]


Dank @piotrek für _some_awe_varzu_someAweVar

Verwenden Sie Suchen: (\w)[_]{1,1}([a-z])
Ersetzen:$1\U$2

Qamar
quelle
2
Der Vollständigkeit halber von camelCase bis snake_case: Suchen ([A-Z]{1,1})und Ersetzen durch _\l$1, wobei sowohl die Optionen Regex als auch Match umgeschaltet sind.
dic19
Das ist großartig, aber in TypeScript beginnen private Mitglieder häufig mit einem _, wodurch sie mit der Großschreibung beginnen.
Stack Underflow
1
@StackUnderflow verwenden Suchen: (\w)[_]{1,1}([a-z]) Ersetzen: $1\U$2
Qamar
7

Von snake_case zu CamelCase

  • Finden: (\w)[_]{1,1}([a-z])
  • Ersetzen: $1\U$2
  • Die Einstellungen:
    • Match Case
    • Regex

Von CamelCase zu snake_case:

  • Finden: ([A-Z])
  • Ersetzen: \_\L$1
  • Die Einstellungen:
    • Match Case
    • Regex
Theodore R. Smith
quelle
3

Die obige Antwort ist fast perfekt, aber beachten Sie, dass sie Variablen wie _somethingoder this._somethingin Somethingund ändert this.Something. Ich wollte das in meinem Fall nicht, da führendes _ verwendet wurde, um "private" Variablen zu bezeichnen (altes JS-Projekt). Ich habe diesen Ansatz leicht modifiziert:

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

Ersetzen: $ 1 \ U $ 2

Dadurch wird sichergestellt, dass nur Variablen mit _in der Mitte betroffen sind.

Piotrek
quelle
1
"oben" ist bedeutungslos, da Antworten sortiert werden können - Ihr "oben" ist nicht jedermanns "oben". Vermeiden Sie es daher, "oben" oder "unten" zu verwenden, um den Inhalt dieser Website zu beschreiben. Geben Sie stattdessen den Namen des Autors an, danke
Eric Aya
Die "obige" Antwort, auf die verwiesen wird, ist @Qamar
Stack
0

Wenn Sie damit einverstanden sind, dass PyCharm auch die Verwendung umgestaltet, starten Sie das Tool "Umbenennen" (Refactor> Umbenennen). Das Fenster öffnet sich mit einer Dropdown-Liste und Sie sollten die snake_case-Version des Textes in der Liste sehen (Sie können das Fenster öffnen und mit Tastenanschlägen zum snake_case wechseln, damit es ziemlich schnell geht).

Rafe
quelle