IntelliJ IDEA modo di modificare più righe


113

L'ho visto fare in TextMate e mi chiedevo se c'è un modo per farlo in IDEA.

Diciamo che ho il seguente codice:

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

Qual è il modo migliore per aggiungere '+ "foo"' a ogni riga? La modalità Colonna non funzionerà poiché le linee non sono allineate correttamente sul lato destro ... a meno che non ci sia un modo semplice per giustificare a destra il testo: P


Questo è qualcosa che devo fare così di rado che anche se ci fosse una modalità speciale nel mio editor, non ricorderei mai come usarla. Userei solo gli appunti se fosse solo per poche righe (come sopra). Se è per centinaia di righe, è allora che passerei al gadget Trova / Sostituisci.
Michael Burr

In modalità colonna, crea 5 cursori all'estrema sinistra. Quindi usa Ctrl-Freccia destra per andare a destra. Più cursori, macro e ricerca-sostituzione sono tutti modi fantastici per farlo! Non riesco a decidere quale mi piace di più.
Daniel Alexiuc

La sua opzione + Maiusc + clic per Macbook. Tutte le scorciatoie Intellij: docs.google.com/document/d/…
Soham Mehta

Risposte:


174

A partire da Idea IntelliJ IDEA 13.1 è possibile modificare più righe.

Uso:

Alt+ Shift+ Clic del mouse

per la selezione. Maggiori informazioni su questo nuovo miglioramento nel blogpost di IntelliJ qui . Funzionalità molto utile.


1
Grazie per il collegamento. Mi sono imbattuto accidentalmente in questa funzione ma in qualche modo non sono riuscito a capire quale combinazione di tasti ho premuto per sbaglio :)
aberrant80

12
A partire da febbraio 2015 Alt-Maiusc-Inserisci: modalità di selezione della colonna O semplicemente Alt-Seleziona. molto potente e facile da usare. Non sono sicuro del motivo per cui le persone continuano a dire all'OP di usare "cerca e sostituisci" quando chiede chiaramente di modificare la riga simultanea - il fatto che lo chieda suggerisce che è abbastanza intelligente da essere consapevole di cerca e sostituisci.
RichieHH

4
Per Mac, è Alt + clic.
Gowtham Gopalakrishnan

5
E per ora, basta il pulsante centrale del mouse + trascina.
WesternGun

1
La sua opzione + Maiusc + clic per Macbook. Tutte le scorciatoie Intellij: docs.google.com/document/d/…
Soham Mehta

114

Uso la modalità di selezione delle colonne ( Cmd+ Shift+8 su Mac) che consente di creare più cursori tramite Shift+ Upo Shift+ Downquindi modificare tutte le linee insieme.

A partire da IntelliJ IDEA 14 c'è anche Clone Caret Above / Below :

  • Finestre: Ctrl , Ctrl+ Up/Down
  • Mac OS: Option , Option+ Up/Down

(tieni premuto la seconda pressione del tasto modificatore, quindi premi il tasto freccia)


5
Avevo premuto accidentalmente Cmd + Shift + 8 e per tutta la vita non riuscivo a capire perché diamine tutto fosse selezionabile "multi riga". Grazie per la scorciatoia di comando!
Robin Jonsson

4
Il doppio <kbd> Ctrl </kbd> non funziona per me su IntelliJ Ultimate 2016.1. Devo usare la doppia <kbc> Opzione </kbd>, tenere premuta la seconda volta, quindi premere i tasti freccia.
Big McLargeHuge

1
@DaveKennedy Hai perfettamente ragione, Jet Brains ha cambiato la scorciatoia predefinita.
Alexander Bogushov

la soluzione a doppio ctrl è la migliore in quanto consente di tenere le mani sulla tastiera
Andrejs

Per modificare la mappatura dei tasti in modo che corrisponda effettivamente a qualsiasi altro editor che utilizzi, vai in Impostazioni -> Mappa dei tasti e nella casella di ricerca a destra cerca "Clone Caret". Fare clic con il pulsante destro del mouse sull'azione e selezionare "Aggiungi scorciatoia da tastiera". Se si salva, si crea un conflitto, fare comunque clic su "OK". Quindi aggiungerà un altro prompt che ti chiederà se vuoi "rimuovere" l'altro compito (probabilmente quello che vuoi), o "lasciarlo" (attivare intenzionalmente due cose con una scorciatoia sembra strano ...) o "Annulla" (perché hai fatto clic su OK in precedenza?)
ArtOfWarfare

38

Un altro approccio solo da tastiera. È possibile (dalla versione 13.1) utilizzare le scorciatoie Alt+ J/ Shift+ Alt+ J( Ctrl+ Gper OS X) per creare più accenti circolari. Alt+J seleziona l'occorrenza successiva del testo attualmente selezionato e aggiunge un altro accento circonflesso.

  1. Seleziona il primo punto e virgola

inserisci qui la descrizione dell'immagine

  1. Quindi premere Alt+ Jquattro volte

inserisci qui la descrizione dell'immagine

  1. Modifica ciò che desideri

inserisci qui la descrizione dell'immagine

  1. Premere Escper tornare alla prima riga.

inserisci qui la descrizione dell'immagine


5
Dio, ho vissuto senza questa funzione per tipo un anno! Molte grazie!
coffman21

27

Posiziona il cursore alla fine

Windows: CTRL + CTRL(tieni premuto) +↑ / ↓

Mac: option + option(tieni premuto) + ↑ / ↓.

Per posizionare il cursore alla fine delle righe: sposta il cursore nella riga superiore, clona fino in fondo e fai clic END.

Cambia tasto di scelta rapida multi-cursore

Per aggiungere una mappa dei tasti personalizzata, CTRL+ SHIFT+ A, digita keymape fai clic su quella conSettings come sottotesto. Cerca Clone Caret Abovee Clone Caret Below.

Ho mappato il mio su ALT+ SHIFT+↑ / ↓ su Windows e + ↑ / ↓su Mac.

indennità

Prova a tenere premute le combinazioni di CTRL, SHIFTe frecce per migliorare il potere di selezione.


1
Grazie per il commento "END", ottimo per assegnazioni comuni a variabili con lunghezze diverse.
Keegan 82

1
Questa dovrebbe essere la risposta in quanto è la risposta più completa e precisa. +1.
Ariel Mirra

un altro modo è tenere premuto "alt" e continuare a premere "j", continuerà ad aggiungere righe alla selezione multilinea.
gaurav

13

La modalità Colonna funziona bene: prima seleziona tutte le righe in modalità Colonna, quindi premi FINE: ogni cursore salterà alla fine della rispettiva riga.

Su Linux ( NESSUN MOUSE NECESSARIO ):

  1. ALT+ SHIFT+ INSERTper entrare in modalità blocco

    modalità di modifica della colonna inserita

  2. SHIFT + UPo SHIFT + DOWNper selezionare più righe

    inserisci qui la descrizione dell'immagine

  3. END per saltare alla fine di ogni riga

    inserisci qui la descrizione dell'immagine

  4. ora digita foo, lo aggiungerà a ogni riga:

    inserisci qui la descrizione dell'immagine

  5. Ora deseleziona tutto con ESCAPEe torna alla modalità di selezione normale con ALT + SHIFT + INSERT.


9

Puoi anche selezionare un blocco di codice verticale facendo clic sulla rotellina del mouse e trascinando :

inserisci qui la descrizione dell'immagine


8

Seleziona la prossima occorrenza:

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

Deseleziona occorrenza:

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

Seleziona tutte le occorrenze:

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

per ulteriori riferimenti: link


Il punto con (left) Alt + Jè che devi prima selezionare il codice.
ALIZEYN

7

Uso solo le macro per questo genere di cose. Inizio a registrare la macro, lo faccio una volta, quindi riproduco la macro su ogni riga che voglio modificare. Saresti stupito di quanto puoi ottenere fantasia con la funzione di registrazione / riproduzione macro.


Le macro buttate via possono essere molto utili per fare questo tipo di modifiche. Il modo in cui lo descrivi è esattamente quello che farei se apportassi queste modifiche all'interno dell'editor di Zeus.
jussij

Se le righe sono tutte raggruppate in questo modo, registra la macro per spostare anche il cursore sulla riga successiva, quindi devi solo iniziare a eseguire la macro sulla prima riga e ripetere tutte le volte che vuoi.
weiji

Come intendi che puoi "ripetere tutte le volte che vuoi"? C'è un modo per ripetere automaticamente una macro?
pypmannetjies

Modifica-> Macro-> Riproduci ultima macro. L'ho mappato su F12, ma ho un'associazione di tasti non standard. Faccio la macro una volta e inizio a battere F12 più e più volte.
Chris Kessel

macro è buono, ma se uso ideavim su intellij, le macro non possono risolvere il collegamento di vim
Amitābha

5

Mi ci è voluto un po 'per scoprirlo, ma su un Mac puoi premere due volte Option( premilo una volta, rilascialo, premilo di nuovo, tienilo premuto) e usa i tasti Up/ Downper creare / rimuovere i cursore come desideri.

Puoi anche tenere premuto Shift+ Optione fare clic per creare / rimuovere accenti circolari in punti specifici.


È fantastico, ma c'è un modo per farlo e selezionare fino alla fine del file? Altrimenti devo scorrere l'intera cosa usando la freccia e abbiamo alcuni file enormi.
Jackie,


3

In questo caso puoi anche selezionare semplicemente il pezzo di codice in cui vuoi farlo ed eseguire una sostituzione su di esso. Sostituisci:

";

con:

" + "foo";

Quindi, nel caso non lo sapessi: se hai selezionato del testo mentre esegui una sostituzione (Ctrl + R o Cmd + R) si applicherà solo alla parte di testo selezionata.


2

Tenere premuto ALT e utilizzare il mouse per fare clic e trascinare




1

Per le versioni più recenti utilizzare: Alt+ Shift+Insert


1
funziona perfettamente! grazie @Meysam
gaurav

un altro modo è tenere premuto "alt" e continuare a premere "j", continuerà ad aggiungere righe alla selezione multilinea.
gaurav

0

Quello che di solito uso (NetBeans, ma credo che sia semplice da usare in qualsiasi IDE) è find&replace .

Devi solo trovarlo ;\ne sostituirlo con+ $foo;\n quindi non applicare a TUTTE le righe ma posizionare il cursore sulla prima riga e premere il pulsante "sostituisci" (dipende dal tuo IDE suppongo) 7 volte per cambiare 7 righe in pochissimo tempo. Facile e semplice e dovrebbe essere fatto con l'IDE più semplice e avanzato che puoi trovare.

EDIT: In IntelliJ (non so se funziona anche in altri IDE) puoi usare la tua regexp cerca e sostituisci solo per la selezione in modo da poter effettivamente usare "sostituisci tutto"


Ovviamente ci sono casi in cui non è possibile applicare questo metodo, quando le linee sono completamente diverse o qualcosa del genere, ma penso che non ci sia molto da fare per queste situazioni anche con metodi avanzati.
Srneczek

Allora perché -1? Ho risposto alla domanda che mi ha fatto. -1 la domanda se pensi sia stupida, non la risposta corretta. La risposta accettata con la macro è secondo me un metodo più lento a dire il vero.
Srneczek


0

Tutte le risposte precedenti sono ottime, ma se vuoi la modifica su più righe alla fine delle righe, devi premere il tasto "Fine" mentre la selezione multilinea è attiva.

Per Mac la sequenza di comando sarà:

shift option click # seleziona un insieme di linee

command right arrow # vai alla fine delle righe

In questo modo verrà eseguita una selezione multilinea alla fine della riga e sarà possibile modificarla secondo necessità

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.