Как в Intellij переключаться между регистром верблюда и символом подчеркивания?

109

В моей компании есть два разных руководства по стилю для java и sql. В java у меня есть поле с именем, historyOfPresentIllnessи когда я пишу sql, я хочу назвать его history_of_present_illness. Есть ли сочетание клавиш для переключения с одного на другой, когда у меня выделена фраза? Или, возможно, плагин, который может это сделать?

Пока я спрашиваю, я могу также спросить, есть ли способ обратиться historyOfPresentIllnessк history-of-present-illness. Это от java до стиля clojure.

Даниэль Каплан
источник

Ответы:

186

Я использую плагин под названием String Manipulation, который имеет нужные вам возможности (и многое другое).

Выберите historyOfPresentIllnessи нажмите Alt+, Mчтобы открыть меню плагина, затем нажмите:

  • 5- В snake_case (или в camelCase), который преобразуется вhistory_of_present_illness
  • 6 - В дефис (или в snake_case), который преобразуется вhistory-of-present-illness

Чтобы упростить эту задачу, вы можете настроить ярлык на File | Settings | Keymap.


Быстрый поиск в репозитории плагинов для "camel" показал плагин CamelCase, который делает именно то, что вы ищете, с SHIFT+ ALT+ U, переключаясь между различными форматами:

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

Однако после того, как вы попробовали его, похоже, что в этом плагине есть ошибка, которая не позволяет вам отменить какие-либо изменения. Обновление: похоже, что эта ошибка уже некоторое время исправлена, поэтому плагин CamelCase, вероятно, лучший вариант.

ДэнниМо
источник
1
@tieTYT Да, это довольно неприятно, потому что вы получаете всплывающее сообщение о том, что в файле есть изменения, которые нельзя отменить ... если бы не это, это был бы более удобный выбор.
DannyMo
2
@tieTYT Мне только что пришло в голову, что для упрощения первого подхода вы можете записать макрос, Edit > Macros > Start recording macroа затем добавить простое сопоставление клавиш для своего макросаSettings > Keymap > Macros > YourMacro (right-click > Add Keyboard Shortcut)
DannyMo
Обработка строк теперь также содержит действия для переключения между всеми типами случаев ... Вы можете настроить ярлык для любого действия (их слишком много, чтобы иметь какое-то значение по умолчанию).
Meo
@DannyMo - Для меня это 5для SCREAMING_SNAKE_CASEи Jдля Trim all spaces. Использование Mac OS X 10.10.5, PhpStorm 10.0.1, обработка строк 4.1.135.445.1.
Pang
Я могу подтвердить, что плагин CamelCase отлично работает с IntelliJ 2016.2.3
Вим Деблаув,
46

Очень просто нажмите, Clr + Fчтобы открыть панель « Найти / заменить» и установите флажок [✓] Копировать регулярное выражение в прошлое.

Найти: [_]{1,1}([a-z])

Заменить: \U$1

Нажмите кнопку [Заменить все], наслаждайтесь


Благодаря @piotrek для _some_awe_varк_someAweVar

Используйте Найти: (\w)[_]{1,1}([a-z])
Заменить:$1\U$2

Камар
источник
2
Просто для полноты, от camelCase до snake_case: find ([A-Z]{1,1})и replace by _\l$1, с переключенными опциями Regex и Match case .
dic19
Это замечательно, но в TypeScript частные члены часто начинаются с символа, _и это заставляет их начинать с заглавной буквы.
Stack
1
@StackUnderflow использовать Найти: (\w)[_]{1,1}([a-z]) Заменить: $1\U$2
Камар
7

От snake_case к CamelCase

  • Найти: (\w)[_]{1,1}([a-z])
  • Заменить: $1\U$2
  • Настройки:
    • Учитывать регистр
    • Регулярное выражение

Из CamelCase в snake_case:

  • Найти: ([A-Z])
  • Заменить: \_\L$1
  • Настройки:
    • Учитывать регистр
    • Регулярное выражение
Теодор Р. Смит
источник
3

Ответ выше почти идеален, но обратите внимание, что он изменит такие переменные, как _somethingили, this._somethingна Somethingи this.Something. Я не хотел этого в моем случае, так как ведущий _ использовался для обозначения «частных» переменных (старый проект JS). Я немного изменил этот подход:

Найдите: (\ w) [_] {1,1} ([az])

Заменить: $ 1 \ U $ 2

Это гарантирует, что _будут затронуты только те переменные, которые находятся в середине.

пиотрек
источник
1
«вверху» не имеет смысла, потому что ответы можно отсортировать - ваше «вверху» - это не «вверху всех», поэтому, пожалуйста, избегайте использования «вверху» или «внизу» для описания содержания на этом сайте, вместо этого укажите имя автора, спасибо
Эрик Ая
Приведенный выше ответ - @Qamar
Stack
0

Если вы согласны с тем, что PyCharm также выполняет рефакторинг использования, запустите инструмент «Переименовать» («Рефакторинг»> «Переименовать»). Появится окно с раскрывающимся списком, и вы должны увидеть версию текста snake_case в списке (вы можете открыть окно и переключиться на snake_case нажатием клавиш, так что это может быть довольно быстро).

Rafe
источник