Maneira IntelliJ IDEA de editar várias linhas


113

Eu vi isso feito no TextMate e queria saber se há uma maneira de fazer isso no IDEA.

Digamos que tenho o seguinte código:

 leaseLabel = "Lease";
 leaseLabelPlural = "Leases";
 portfolioLabel = "Portfolio";
 portfolioLabelPlural = "Portfolios";
 buildingLabel = "Building";

Qual é a melhor maneira de adicionar '+ "foo"' a cada linha? O modo coluna não funcionará porque as linhas não estão alinhadas corretamente no lado direito ... a menos que haja uma maneira fácil de justificar o texto à direita: P


Isso é algo que preciso fazer tão raramente que, mesmo que houvesse um modo especial em meu editor, nunca me lembraria de como usá-lo. Eu apenas usaria a área de transferência se fosse apenas por algumas linhas (como acima). Se for para centenas de linhas, é quando eu mudaria para o gadget localizar / substituir.
Michael Burr

No modo de coluna, crie 5 cursores à esquerda. Em seguida, use Ctrl-RightArrow para ir para a direita. Múltiplos cursores, macros e substituição de pesquisa são maneiras incríveis de fazer isso! Não consigo decidir de qual gosto mais.
Daniel Alexiuc

Sua opção + Shift + clique para Macbook. Todos os atalhos do Intellij: docs.google.com/document/d/…
Soham Mehta

Respostas:


174

Desde o Idea IntelliJ IDEA 13.1, existe a possibilidade de editar várias linhas.

Usar:

Alt+ Shift+ Clique do mouse

para seleção. Mais sobre essa nova melhoria na postagem do blog do IntelliJ aqui . Recurso muito útil.


1
Obrigado pelo link. Acidentalmente encontrei este recurso, mas de alguma forma não consegui descobrir qual combinação de teclas eu acidentalmente pressionei :)
aberrant80

12
Em fevereiro de 2015 Alt-Shift-Insert: Modo de seleção de coluna OU simplesmente Alt-Select. muito poderoso e fácil de usar. Não sei por que as pessoas continuam dizendo ao OP para usar "pesquisar e substituir" quando ele está claramente perguntando sobre a edição de linha simultânea - o fato de ele perguntar isso sugere que ele é inteligente o suficiente para estar ciente de pesquisar e substituir.
RichieHH

4
Para Mac, é Alt + Clique.
Gowtham Gopalakrishnan

5
E, por enquanto, basta arrastar o botão do meio do mouse
WesternGun

1
Sua opção + Shift + clique para Macbook. Todos os atalhos do Intellij: docs.google.com/document/d/…
Soham Mehta

114

Eu uso o Modo de Seleção de Coluna ( Cmd+ Shift+ 8no Mac) que permite criar vários cursores via Shift+ Upou Shift+ e, em Downseguida, editar todas as linhas juntas.

A partir do IntelliJ IDEA 14, há também Clone Caret Acima / Abaixo :

  • Do Windows: Ctrl, Ctrl+ Up/Down
  • MacOS: Option, Option+ Up/Down

(mantenha pressionada a segunda tecla da tecla modificadora e, a seguir, pressione a tecla de seta)


5
Eu tinha acidentalmente pressionado Cmd + Shift + 8 e não conseguia entender por que diabos tudo era selecionável em "várias linhas". Obrigado pelo atalho de comando!
Robin Jonsson

4
<kbd> Ctrl </kbd> duplo não funciona para mim no IntelliJ Ultimate 2016.1. Tenho que usar <kbc> Opção </kbd> dupla, segure a segunda pressão e, a seguir, pressione as teclas de seta.
Big McLargeHuge

1
@DaveKennedy Você está absolutamente certo, Jet Brains mudou o atalho padrão.
Alexander Bogushov

A solução de controle duplo é melhor porque permite manter minhas mãos no teclado
Andrejs

Para alterar o mapeamento de teclas para realmente corresponder a qualquer um dos outros editores que você usa, vá em Configurações -> Mapa de teclas e, na caixa de pesquisa correta, procure por "Clone Caret". Clique com o botão direito na ação e selecione "Adicionar atalho de teclado". Se salvar causa um conflito, clique em "OK" de qualquer maneira. Em seguida, ele adicionará outro prompt perguntando se você deseja "Remover" a outra atribuição (provavelmente o que você deseja), ou "Deixá-la" (acionar intencionalmente duas coisas com um atalho parece estranho ...) ou "Cancelar" (por que você
clicou

38

Outra abordagem apenas com teclado. É possível (desde a versão 13.1) usar os atalhos Alt+ J/ Shift+ Alt+ J( Ctrl+ Gpara OS X) para criar vários circunflexos. Alt+ Jseleciona a próxima ocorrência do texto atualmente selecionado e adiciona outro acento circunflexo.

  1. Selecione o primeiro ponto e vírgula

insira a descrição da imagem aqui

  1. Em seguida, pressione Alt+ Jquatro vezes

insira a descrição da imagem aqui

  1. Edite o que você quiser

insira a descrição da imagem aqui

  1. Pressione Escpara retornar à primeira linha.

insira a descrição da imagem aqui


5
Deus, eu vivi sem esse recurso por tipo um ano! Muito obrigado!
coffman21

27

Coloque o cursor no final

Windows: CTRL + CTRL(mantenha pressionado) +↑ / ↓

Mac: option + option(mantenha pressionado) + ↑ / ↓.

Para colocar o cursor no final das linhas: mova o cursor para a linha superior, clone para baixo e clique END.

Alterar tecla de atalho multi-caret

Para adicionar um mapa de teclado personalizado, CTRL+ SHIFT+ A, digite keymape clique Settingsnaquele com o subtexto. Pesquise Clone Caret Abovee Clone Caret Below.

Mapeei o meu para ALT+ SHIFT+ ↑ / ↓no Windows e + ↑ / ↓no Mac.

Bônus

Tente manter combinações de CTRL, SHIFTe para melhorar a potência setas selecção.


1
Obrigado pelo comentário 'END', ótimo para atribuições comuns em variáveis ​​com comprimentos diferentes.
Keegan 82

1
Esta deve ser a resposta, pois é a resposta mais completa e precisa. +1.
Ariel Mirra

outra maneira é segurar "alt" e continuar pressionando "j", isso continuará adicionando linhas à seleção de várias linhas.
gaurav

13

O modo de coluna funciona muito bem: primeiro selecione todas as linhas no modo de coluna e, em seguida, pressione END: cada cursor irá saltar para o final da linha respectiva.

No Linux ( SEM MOUSE NECESSÁRIO ):

  1. ALT+ SHIFT+ INSERTpara entrar no modo de bloqueio

    entrou no modo de edição de coluna

  2. SHIFT + UPou SHIFT + DOWNpara selecionar várias linhas

    insira a descrição da imagem aqui

  3. END pular para o final de cada linha

    insira a descrição da imagem aqui

  4. agora digite foo, ele irá anexá-lo a cada linha:

    insira a descrição da imagem aqui

  5. Agora desmarque tudo com ESCAPEe volte para o modo de seleção normal com ALT + SHIFT + INSERT.


9

Você também pode fazer uma seleção de bloco de código vertical clicando na roda do mouse e arrastando :

insira a descrição da imagem aqui


8

Selecione a próxima ocorrência:

      Alt+J on Windows, Ctrl-G on Mac OS X

Desmarque a ocorrência:

      Alt+Shift+J on Windows, Ctrl-Shift-G on Mac OS X

Selecione todas as ocorrências:

      Ctrl+Alt+Shift+J on Windows, Ctrl-Cmd-G on Mac OS X

para mais referências: link


O ponto com (left) Alt + Jé que você tem que selecionar o código primeiro.
ALIZEYN de

7

Eu apenas uso as macros para esse tipo de coisa. Eu começo a gravar a macro, faço isso uma vez e, em seguida, reproduzo a macro em cada linha que desejo modificar. Você ficaria surpreso com o quão sofisticado você pode ficar com o recurso de gravação / reprodução de macro.


Descartar macros pode ser muito útil para fazer esse tipo de alteração. Como você descreve é ​​exatamente o que eu faria se estivesse fazendo essas alterações dentro do editor Zeus.
jussij

Se as linhas estiverem todas agrupadas dessa forma, grave a macro para também mover o cursor para a próxima linha, então você apenas tem que começar a executar a macro na primeira linha e repetir quantas vezes quiser.
weiji

O que você quer dizer com "repetir quantas vezes quiser"? Existe uma maneira de repetir automaticamente uma macro?
pypmannetjies

Editar-> Macros-> Reproduzir última macro. Eu mapeei isso para F12, mas tenho uma ligação de chave não padrão. Eu faço a macro uma vez e começo a bater F12 repetidamente.
Chris Kessel

macros é bom, mas se eu usar o ideavim no intellij, as macros não podem resolver o atalho do vim
Amitābha

5

Levei um tempo para descobrir, mas em um Mac você pode pressionar duas vezes Option(pressione uma vez, solte, pressione novamente, mantenha pressionado) e use as teclas Up/ Downpara criar / remover circunflexos conforme desejar.

Você também pode segurar Shift+ Optione clicar para criar / remover circunflexos em pontos específicos.


Isso é ótimo, mas há uma maneira de fazer isso e selecionar tudo até o final do arquivo? Caso contrário, tenho que percorrer a coisa toda usando a seta e temos alguns arquivos enormes.
Jackie


3

Nesse caso, você também pode apenas selecionar o trecho de código no qual deseja fazer isso e substituí-lo. Substitua:

";

por:

" + "foo";

Portanto, caso você não soubesse: Se você selecionou um texto durante a substituição (Ctrl + R ou Cmd + R), ele só se aplicará ao trecho de texto selecionado.


2

Segure ALT e use o mouse para clicar e arrastar




1

Para versões mais recentes, use: Alt+ Shift+Insert


1
funciona perfeitamente! graças @Meysam
gaurav

outra maneira é segurar "alt" e continuar pressionando "j", isso continuará adicionando linhas à seleção de várias linhas.
gaurav

0

O que eu costumo usar (NetBeans, mas acredito que seja simples de usar em qualquer IDE) é find&replace.

Você apenas encontra ;\ne substitui com + $foo;\nentão você não aplica a TODAS as linhas, mas coloca o cursor na primeira linha e apenas clica no botão "substituir" (depende do seu IDE, suponho) 7 vezes para alterar 7 linhas em nenhum momento. Fácil e simples e deve ser feito com o IDE mais básico e avançado que você puder encontrar.

EDITAR: No IntelliJ (não sei se funciona em outros IDEs também), você pode usar sua pesquisa regexp e substituir para seleção apenas para que possa realmente usar "substituir tudo"


Claro, existem casos em que você não pode aplicar este método, quando as linhas são totalmente diferentes ou algo assim, mas eu acho que não há muito que você possa fazer sobre essas situações, mesmo com métodos avançados.
Srneczek de

Então, por que -1? Eu respondi a pergunta que ele fez. -1 a pergunta se você acha que é estúpido, não é a resposta correta. A resposta aceita com macro é, na minha opinião, um método mais lento para ser honesto.
Srneczek,


0

Todas as respostas acima são ótimas, mas se você quiser editar várias linhas no final das linhas, pressione a tecla "End" enquanto sua seleção de várias linhas estiver ativa.

Para Mac, a sequência de comando será:

shift option click # selecione um conjunto de linhas

command right arrow # vai para o fim das linhas

Isto irá fazer a seleção de várias linhas no final da linha e você poderá editá-la conforme necessário

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.