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.

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ą.


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


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

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.


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).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.