Como navegar pelo código fonte por partes no CamelCase (em vez de palavras inteiras)?

251

Lembro-me de quando estava usando o Eclipse que, ao pressionar CTRL e usar as setas esquerda ou direita, o Eclipse navegaria LongCamelCaseWrittenWordem várias etapas. Uma palavra de caso de camelo por vez.

Então, será como segue (pipe |representa a posição real do cursor):

|LongCamelCaseWrittenWord -> CTRL+RIGHT_ARROW ->
Long|CamelCaseWrittenWord -> CTRL+RIGHT_ARROW ->
LongCamel|CaseWrittenWord -> CTRL+RIGHT_ARROW ->
LongCamelCase|WrittenWord -> CTRL+RIGHT_ARROW ->
LongCamelCaseWritten|Word -> CTRL+RIGHT_ARROW ->
LongCamelCaseWrittenWord|

Existe uma maneira de conseguir isso no IntelliJ? Atualmente, o IntelliJ percorre toda a palavra de uma só vez.

Usando o IntelliJ 9.0

Jan Zyka
fonte

Respostas:

389

Sim, ative Use as palavras "CamelHumps" em Settings | Editor | General | Smart Keys.

CrazyCoder
fonte
15
CamelHumps faz Ctrl + Direita, Ctrl + Esquerda saltar por camel humps. Como ainda posso ter as duas funcionalidades, como pular palavras e CamelHumps com teclas diferentes?
mafonya
1
na idéia mais recente, o fluxo éSettings | Editor | General | Smart Keys
Jiri Kremser
48
Como o @mafonya menciona uma resposta diferente, o comportamento do clique duplo pode ser restaurado localizando e desativando a configuração chamada "Honrar" CamelHumps "configurações de palavras ao selecionar o clique duplo".
Paul Lammertsma
9
Caso alguém mais tenha perdido, a configuração 'Honor "CamelHumps" ...' está dentroSettings | Editor | General
Carl G
Concordo que esse deve ser o comportamento padrão. Para quem vem do Eclipse, isso é como construído em nossa memória muscular desde o primeiro dia.
Pierre
45

Como respondida em outro lugar, você pode habilitar o uso "CamelHumps" palavras em Settings | Editor | General | Smart Keysmudar os atalhos para trabalhar com camelCase em vez de toda palavra.

Você também pode acessar o comportamento anterior atribuindo atalhos de teclado às ações apropriadas em Settings | Appearance & Behavior | Keymap | Editor Actions. Esta imagem mostra um exemplo em que acesso o comportamento anterior adicionando ctrl:

captura de tela do keymap

Carl G
fonte
4
Impressionante! Esse deve ser o comportamento padrão no intellij!
AndiDev 17/06/2016
Obrigado! Isto é perfeito. O clique duplo faz a palavra inteira, mas as teclas ctrl + direction são usadas.
Brett
19

Você pode ter as duas funcionalidades ao mesmo tempo:

  1. Em "Configurações-> Editor-> Geral-> Teclas inteligentes", desative "Usar palavras CamelHumps".
  2. Em "mapa de teclas", crie atalhos para:
    • "Mover cursor para a próxima palavra"
    • "Mover cursor para a próxima palavra em modo diferente de camelhumps"

Observe que essas etapas correspondem ao IntelliJ 14, portanto, podem ser um pouco diferentes em outras versões.

nota azul
fonte
Por curiosidade, você mapeou os dois? Se sim, qual combinação você escolheu?
eleger
Sim, eu mapei os dois, é útil quando você tem nomes longos de classe. Em geral, você não deseja ter atalhos diferentes para cada programa. Então, eu usei ctrl+arrowpara palavras inteiras (que é o atalho usado em todos os lugares ), e alt+arrowpara camelhumps palavras (que é o modificador único remanescente, já que mudança é usado para a seleção em cada programa)
blue_note
Eu remapeei isso para ctrl+PgUp/PgDne Ctrl+(shift)+Tab, como ele é usado em todos os navegadores e na maioria dos programas, já está na minha memória muscular.
blue_note
Eu gostaria de usar alt+arrowpara mover por palavras inteiras e ctrl+arrownavegar por corcova de camelo. (Esse é o comportamento padrão no Xcode, que é a minha "memória muscular".) Estou tentando fazer isso usando as Preferências do IntelliJ, mas não consigo ctrl+{anything}registrar o que é simples . ctrl+alt+{something}parece funcionar, como funciona alt+{something}, mas não ctrl+{something}. Estou em um Mac. Meu Keymap atual é o Mac OS X 10.5+. Alguma sugestão?
mbm29414
@ mbm29414: funciona bem para mim no macos. mesmo se já estiver atribuído a outra coisa. Talvez seja algum ajuste externo para IntelliJ
blue_note