W Intellij, jak przełączać się między wielbłądem a podkreśleniem z odstępami?

109

W mojej firmie mamy dwa różne przewodniki po stylach dla Java vs sql. W Javie mam pole o nazwie historyOfPresentIllnessi kiedy piszę sql, chcę je nazwać history_of_present_illness. Czy istnieje skrót klawiaturowy do przełączania się z jednego na drugi, gdy mam podświetloną frazę? A może wtyczka, która to potrafi?

A ja pytam, ja może również zapytać, czy istnieje sposób, aby włączyć historyOfPresentIllnessdo history-of-present-illness. To od javy po styl clojure.

Daniel Kaplan
źródło

Odpowiedzi:

186

Używam wtyczki o nazwie String Manipulation, która ma możliwości, których szukasz (i więcej).

Wybierz historyOfPresentIllnessi naciśnij Alt+, Maby wywołać menu wtyczki, a następnie naciśnij:

  • 5- do snake_case (lub camelCase), który konwertuje dohistory_of_present_illness
  • 6 - na myślnik-literę (lub do snake_case), który jest konwertowany nahistory-of-present-illness

Aby to ułatwić, możesz ustawić skrót pod adresem File | Settings | Keymap.


Szybkie przeszukanie repozytorium wtyczek dla „wielbłąda” pokazało wtyczkę o nazwie CamelCase, która robi dokładnie to, czego szukasz, z SHIFT+ ALT+ U, przełączając się między różnymi formatami:

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

Jednak po wypróbowaniu tej wtyczki wydaje się, że jest błąd, który uniemożliwia cofnięcie jakichkolwiek zmian. Aktualizacja: wygląda na to, że ten błąd został naprawiony od jakiegoś czasu, więc wtyczka CamelCase jest prawdopodobnie właściwą drogą.

DannyMo
źródło
1
@tieTYT Tak, to dość denerwujące, ponieważ pojawia się wyskakujące okienko z informacją, że w pliku są zmiany, których nie można cofnąć ... gdyby nie to, byłby to wygodniejszy wybór.
DannyMo
2
@tieTYT Właśnie przyszło mi do głowy, że aby uprościć pierwsze podejście, możesz nagrać makro, Edit > Macros > Start recording macroa następnie dodać proste mapowanie klawiszy dla swojego makraSettings > Keymap > Macros > YourMacro (right-click > Add Keyboard Shortcut)
DannyMo
Manipulacja łańcuchami zawiera teraz również akcje umożliwiające przełączanie między wszystkimi rodzajami przypadków ... Możesz ustawić skrót do dowolnej akcji (jest ich zbyt wiele, aby mieć jakieś domyślne).
Meo
@DannyMo - Dla mnie, to 5dla SCREAMING_SNAKE_CASEi Jjest Trim all spaces. Używając Mac OS X 10.10.5, PhpStorm 10.0.1, String Manipulation 4.1.135.445.1.
Pang
Mogę potwierdzić, że wtyczka CamelCase działa dobrze z IntelliJ 2016.2.3
Wim Deblauwe
45

Bardzo proste naciśnięcie Clr + Fotwiera panel Znajdź / zamień i zaznacz [✓] Regex kopiuj poza wyrażeniem regularnym

Odnaleźć: [_]{1,1}([a-z])

Zastąpić: \U$1

Naciśnij przycisk [Zamień wszystko], Enjoy


Dzięki @piotrek na _some_awe_varcelu_someAweVar

Użyj Znajdź: (\w)[_]{1,1}([a-z])
Zastąp:$1\U$2

Qamar
źródło
2
Dla zachowania kompletności, od camelCase do snake_case: znajdź ([A-Z]{1,1})i zamień przez _\l$1, z przełączonymi opcjami Regex i Match case .
dic19
To jest świetne, ale w TypeScript często prywatni członkowie zaczynają się od _a, co spowoduje, że zaczną pisać wielką literą.
Stack Underflow
1
@StackUnderflow użyj Find: (\w)[_]{1,1}([a-z]) Replace: $1\U$2
Qamar
7

Od snake_case do CamelCase

  • Odnaleźć: (\w)[_]{1,1}([a-z])
  • Zastąpić: $1\U$2
  • Ustawienia:
    • Sprawa meczu
    • Regex

Od CamelCase do snake_case:

  • Odnaleźć: ([A-Z])
  • Zastąpić: \_\L$1
  • Ustawienia:
    • Sprawa meczu
    • Regex
Theodore R. Smith
źródło
3

Powyższa odpowiedź jest prawie doskonała, ale pamiętaj, że zmieni ona zmienne, takie jak _somethinglub this._somethingna Somethingi this.Something. Nie chciałem tego w moim przypadku, ponieważ początkowe _ było używane do oznaczania zmiennych „prywatnych” (stary projekt JS). Nieznacznie zmodyfikowałem to podejście:

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

Zastąp: 1 $ \ U $ 2

Zapewni to _wpływ tylko na zmienne z pośrodku.

piotrek
źródło
1
„powyżej” jest bez znaczenia, ponieważ odpowiedzi można sortować - Twoje „powyżej” nie jest „powyżej” dla każdego, więc unikaj używania „powyżej” lub „poniżej” do opisywania treści na tej stronie, zamiast tego podaj nazwisko autora, dzięki
Eric Aya
„Powyższa” odpowiedź to @Qamar
Stack Underflow
0

Jeśli nie masz nic przeciwko, aby PyCharm również refaktoryzował zastosowania, uruchom narzędzie „Zmień nazwę” (Refaktoryzuj> Zmień nazwę). Pojawi się okno z rozwijaną listą i powinieneś zobaczyć wersję snake_case tekstu na liście (możesz otworzyć okno i przełączyć się na snake_case za pomocą naciśnięć klawiszy, więc może to być dość szybkie).

Rafe
źródło