No Intellij, como alterno entre caixa de camelo e espaçamento de sublinhado?

108

Na minha empresa, temos dois guias de estilo diferentes para java vs sql. Em java, tenho um campo chamado historyOfPresentIllnesse quando escrevo sql, quero nomeá-lo history_of_present_illness. Existe um atalho de teclado para alternar de um para outro quando tenho a frase destacada? Ou talvez um plugin que pode fazer isso?

Enquanto eu estou pedindo, eu também pode perguntar se há uma maneira de transformar historyOfPresentIllnessa history-of-present-illness. Isso é do estilo java ao clojure.

Daniel Kaplan
fonte

Respostas:

185

Eu uso um plugin chamado String Manipulation que tem os recursos que você está procurando (e mais).

Selecione historyOfPresentIllnesse pressione Alt+ Mpara abrir o menu de plug-ins e pressione:

  • 5- Para snake_case (ou para camelCase) que converte parahistory_of_present_illness
  • 6 - Para maiúsculas e minúsculas (ou para snake_case) que converte parahistory-of-present-illness

Para tornar isso mais fácil, você pode configurar um atalho em File | Settings | Keymap.


Uma pesquisa rápida no repositório de plug-ins para "camel" mostrou um plug-in chamado CamelCase que faz exatamente o que você está procurando com SHIFT+ ALT+ Ualternando entre vários formatos:

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

No entanto, depois de experimentá-lo, parece haver um bug com este plugin que o impede de desfazer qualquer alteração. Atualização: parece que esse bug já foi corrigido há algum tempo, então o plugin CamelCase é provavelmente o caminho a percorrer.

DannyMo
fonte
1
@tieTYT Sim, é muito irritante porque você recebe uma mensagem pop-up informando que o arquivo tem alterações que não podem ser desfeitas ... se não fosse por isso, teria sido a escolha mais conveniente.
DannyMo
2
@tieTYT Acabei de me ocorrer que, para simplificar a primeira abordagem, você poderia gravar uma macro Edit > Macros > Start recording macroe, em seguida, adicionar um mapeamento de teclas simples para sua macroSettings > Keymap > Macros > YourMacro (right-click > Add Keyboard Shortcut)
DannyMo
Manipulação de string agora também contém ações para alternar entre todos os tipos de casos ... Você pode configurar um atalho para qualquer ação (há muitos deles para ter algum padrão).
Meo
@DannyMo - Para mim, é 5para SCREAMING_SNAKE_CASEe Jé para Trim all spaces. Usando Mac OS X 10.10.5, PhpStorm 10.0.1, String Manipulation 4.1.135.445.1.
Pang
Posso confirmar que o plugin CamelCase funciona bem com IntelliJ 2016.2.3
Wim Deblauwe
45

Pressione muito simples Clr + Fpara abrir o painel Localizar / Substituir e marque [✓] Cópia de regex para regex

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

Substituir: \U$1

Pressione o botão [Substituir tudo], Aproveite


Obrigado @piotrek por _some_awe_varpara_someAweVar

Use Localizar: (\w)[_]{1,1}([a-z])
Substituir:$1\U$2

Qamar
fonte
2
Apenas para completar, de camelCase para snake_case: localizar ([A-Z]{1,1})e substituir por _\l$1, com as opções Regex e Match case alternadas.
dic19
Isso é ótimo, mas no TypeScript, geralmente os membros privados começam com um _e isso os fará começar com letras maiúsculas.
Stack Underflow
1
@StackUnderflow use Localizar: (\w)[_]{1,1}([a-z]) Substituir: $1\U$2
Qamar
7

De snake_case para CamelCase

  • Encontrar: (\w)[_]{1,1}([a-z])
  • Substituir: $1\U$2
  • Configurações:
    • Caso de compatibilidade
    • Regex

De CamelCase para snake_case:

  • Encontrar: ([A-Z])
  • Substituir: \_\L$1
  • Configurações:
    • Caso de compatibilidade
    • Regex
Theodore R. Smith
fonte
3

A resposta acima é quase perfeita, mas observe que ela mudará variáveis ​​como _somethingou this._somethingpara Somethinge this.Something. Eu não queria isso no meu caso, já que o principal _ era usado para denotar variáveis ​​"privadas" (projeto JS antigo). Eu modifiquei ligeiramente esta abordagem:

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

Substituir: $ 1 \ U $ 2

Isso garantirá que apenas as variáveis ​​com _está no meio serão afetadas.

Piotrek
fonte
1
"acima" não tem sentido porque as respostas podem ser classificadas - seu "acima" não é o "acima" de todos, portanto, evite usar "acima" ou "abaixo" para descrever o conteúdo deste site, em vez disso, forneça o nome do autor, obrigado
Eric Aya
A resposta "acima" mencionada é @Qamar
Stack Underflow
0

Se você concordar com o uso de refatoração de PyCharm, execute a ferramenta "Renomear" (Refatorar> Renomear). A janela aparece com a lista suspensa e você deve ver a versão snake_case do texto na lista (você pode abrir a janela e alternar para snake_case pressionando as teclas para que seja bem rápido).

Rafe
fonte