Di Intellij, bagaimana cara beralih antara kotak unta dan spasi garis bawah?

109

Di perusahaan saya, kami memiliki dua panduan gaya berbeda untuk java vs sql. Di java saya memiliki field bernama historyOfPresentIllnessdan ketika saya menulis sql, saya ingin menamainya history_of_present_illness. Apakah ada pintasan keyboard untuk beralih dari satu ke yang lain saat frasa tersebut disorot? Atau mungkin plugin yang bisa melakukan ini?

Sementara saya minta, saya mungkin juga menanyakan apakah ada cara untuk mengubah historyOfPresentIllnesske history-of-present-illness. Itu dari gaya java ke clojure.

Daniel Kaplan
sumber

Jawaban:

186

Saya menggunakan plugin yang disebut Manipulasi String yang memiliki kemampuan yang Anda cari (dan banyak lagi).

Pilih historyOfPresentIllnessdan tekan Alt+ Muntuk membuka menu plugin, lalu tekan:

  • 5- Untuk snake_case (atau ke camelCase) yang diubah menjadihistory_of_present_illness
  • 6 - Untuk hyphen-case (atau ke snake_case) yang diubah menjadihistory-of-present-illness

Untuk membuatnya lebih mudah, Anda dapat menyiapkan pintasan di File | Settings | Keymap.


Pencarian cepat dari repositori plugin untuk "unta" menunjukkan sebuah plugin bernama CamelCase yang melakukan apa yang Anda cari dengan SHIFT+ ALT+ Udengan beralih di antara berbagai format:

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

Namun, setelah mencobanya, tampaknya ada bug dengan plugin ini yang mencegah Anda membatalkan perubahan apa pun. Pembaruan: tampaknya bug ini telah diperbaiki untuk sementara waktu sekarang, jadi plugin CamelCase mungkin adalah cara yang tepat.

DannyMo
sumber
1
@tieTYT Ya, ini cukup menjengkelkan karena Anda mendapatkan pesan pop-up yang memberitahu Anda bahwa file tersebut memiliki perubahan yang tidak dapat dibatalkan ... jika bukan karena itu, itu akan menjadi pilihan yang lebih nyaman.
DannyMo
2
@tieTYT Baru saja terpikir oleh saya bahwa untuk menyederhanakan pendekatan pertama, Anda dapat merekam makro Edit > Macros > Start recording macrodan kemudian menambahkan pemetaan kunci sederhana untuk makro AndaSettings > Keymap > Macros > YourMacro (right-click > Add Keyboard Shortcut)
DannyMo
Manipulasi String sekarang juga berisi tindakan untuk beralih di antara semua jenis kasus ... Anda dapat menyiapkan pintasan ke tindakan apa pun (ada terlalu banyak untuk memiliki beberapa default).
Meo
@DannyMo - Bagi saya, ini 5untuk SCREAMING_SNAKE_CASEdan Juntuk Trim all spaces. Menggunakan Mac OS X 10.10.5, PhpStorm 10.0.1, Manipulasi String 4.1.135.445.1.
Pang
Saya dapat mengonfirmasi bahwa plugin CamelCase berfungsi dengan baik dengan IntelliJ 2016.2.3
Wim Deblauwe
45

Tekan sangat mudah Clr + Funtuk membuka panel Temukan / Ganti dan centang [✓] Salin Regex melewati ekspresi reguler

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

Menggantikan: \U$1

Tekan tombol [Ganti semua], Selamat menikmati


Terima kasih @piotrek untuk _some_awe_varke_someAweVar

Gunakan Temukan: (\w)[_]{1,1}([a-z])
Ganti:$1\U$2

Qamar
sumber
2
Demi kelengkapan, dari camelCase ke snake_case: temukan ([A-Z]{1,1})dan ganti oleh _\l$1, dengan opsi Regex dan Match case yang diubah.
dic19
Ini bagus, tetapi di TypeScript, sering kali anggota pribadi mulai dengan _dan ini akan membuat mereka mulai menggunakan huruf besar .
Stack Underflow
1
@StackUnderflow gunakan Temukan: (\w)[_]{1,1}([a-z]) Ganti: $1\U$2
Qamar
7

Dari snake_case ke CamelCase

  • Temukan: (\w)[_]{1,1}([a-z])
  • Menggantikan: $1\U$2
  • Pengaturan:
    • Kasus Pertandingan
    • Regex

Dari CamelCase ke snake_case:

  • Temukan: ([A-Z])
  • Menggantikan: \_\L$1
  • Pengaturan:
    • Kasus Pertandingan
    • Regex
Theodore R. Smith
sumber
3

Jawaban di atas hampir sempurna, tetapi perhatikan bahwa ini akan mengubah variabel seperti _somethingatau this._somethingmenjadi Somethingdan this.Something. Saya tidak ingin itu dalam kasus saya, karena leading _ digunakan untuk menunjukkan variabel "privat" (proyek JS lama). Saya sedikit mengubah pendekatan ini:

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

Ganti: $ 1 \ U $ 2

Ini akan memastikan bahwa hanya variabel dengan _ada di tengah yang akan terpengaruh.

piotrek.dll
sumber
1
"di atas" tidak ada artinya karena jawaban dapat diurutkan - "di atas" Anda bukanlah "di atas" semua orang jadi harap hindari penggunaan "di atas" atau "di bawah" untuk mendeskripsikan konten di situs ini, sebagai gantinya berikan nama penulisnya, terima kasih
Eric Aya
Jawaban "di atas" yang dirujuk adalah @Qamar
Stack Underflow
0

Jika Anda setuju dengan PyCharm yang juga memfaktorkan ulang penggunaan, luncurkan alat "Ubah nama" (Refactor> Ubah nama). Jendela muncul dengan daftar drop-down dan Anda akan melihat versi snake_case dari teks dalam daftar (Anda dapat membuka jendela dan beralih ke snake_case dengan penekanan tombol sehingga bisa sangat cepat).

Rafe
sumber