IntelliJ IDEA moyen de modifier plusieurs lignes


113

J'ai vu cela fait dans TextMate et je me demandais s'il y avait un moyen de le faire dans IDEA.

Disons que j'ai le code suivant:

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

Quelle est la meilleure façon d'ajouter "+" foo "" à chaque ligne? Le mode colonne ne fonctionnera pas car les lignes ne sont pas correctement alignées sur le côté droit ... sauf s'il existe un moyen simple de justifier à droite le texte: P


C'est quelque chose que je dois faire si rarement que même s'il y avait un mode spécial dans mon éditeur, je ne me souviendrais jamais comment l'utiliser. J'utiliserais simplement le presse-papiers si ce n'était que pour quelques lignes (comme ci-dessus). Si c'est pour des centaines de lignes, c'est à ce moment que je passerais au gadget de recherche / remplacement.
Michael Burr

En mode colonne, créez 5 curseurs à l'extrême gauche. Ensuite, utilisez Ctrl-RightArrow pour vous déplacer vers la droite. Plusieurs curseurs, macros et remplacement de recherche sont tous des moyens géniaux pour y parvenir! Je ne peux pas décider lequel je préfère.
Daniel Alexiuc

Son option + Maj + clic pour Macbook. Tous les raccourcis Intellij: docs.google.com/document/d/…
Soham Mehta

Réponses:


174

Depuis Idea IntelliJ IDEA 13.1, il est possible de modifier plusieurs lignes.

Utilisation:

Alt+ Shift+ Clic de souris

pour la sélection. Pour en savoir plus sur cette nouvelle amélioration du blog IntelliJ, cliquez ici . Fonctionnalité très utile.


1
Merci pour le lien. J'ai accidentellement frappé sur cette fonctionnalité mais je ne pouvais pas comprendre quelle combinaison de touches j'ai accidentellement appuyée :)
aberrant80

12
À partir de février 2015 Alt-Shift-Insert: Mode de sélection de colonne OU simplement Alt-Select. très puissant et facile à utiliser. Je ne sais pas pourquoi les gens continuent de dire au PO d'utiliser "rechercher et remplacer" quand il pose clairement des questions sur l'édition simultanée de lignes - le fait qu'il demande cela suggère qu'il est assez intelligent pour être conscient de la recherche et du remplacement.
RichieHH

4
Pour Mac, c'est Alt + Clic.
Gowtham Gopalakrishnan

5
Et pour l'instant, il suffit de faire glisser le bouton central de la souris.
WesternGun le

1
Son option + Maj + clic pour Macbook. Tous les raccourcis Intellij: docs.google.com/document/d/…
Soham Mehta

114

J'utilise le mode de sélection de colonne ( Cmd+ Shift+ 8sur Mac) qui permet de créer plusieurs curseurs via Shift+ Upou Shift+ Downpuis d'éditer toutes les lignes ensemble.

À partir d'IntelliJ IDEA 14, il y a aussi Clone Caret ci-dessus / ci-dessous :

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

(maintenez la deuxième pression sur la touche de modification, puis appuyez sur la touche fléchée)


5
J'avais accidentellement appuyé sur Cmd + Shift + 8 et je ne pouvais pas pour la vie de moi comprendre pourquoi diable tout était sélectionnable "multi-lignes". Merci pour le raccourci de commande!
Robin Jonsson

4
Double <kbd> Ctrl </kbd> ne fonctionne pas pour moi sur IntelliJ Ultimate 2016.1. Je dois utiliser la double <kbc> Option </kbd>, maintenez la deuxième pression, puis appuyez sur les touches fléchées.
Big McLargeHuge

1
@DaveKennedy Vous avez parfaitement raison, Jet Brains a changé le raccourci par défaut.
Alexander Bogushov

la solution double ctrl est la meilleure car elle permet de garder mes mains sur le clavier
Andrejs

Pour modifier le mappage des touches pour qu'il corresponde réellement à l'un de vos autres éditeurs que vous utilisez, allez dans Paramètres -> Keymap, et dans la zone de recherche de droite, recherchez "Clone Caret". Cliquez avec le bouton droit sur l'action et choisissez "Ajouter un raccourci clavier". S'il enregistre, il provoque un conflit, cliquez quand même sur "OK". Ensuite, il ajoutera une autre invite vous demandant si vous voulez "Supprimer" l'autre affectation (probablement ce que vous voulez), ou "Quitter" (déclencher intentionnellement deux choses avec un raccourci semble bizarre ...) ou "Annuler" (pourquoi avez-vous cliqué sur OK auparavant?)
ArtOfWarfare

38

Une autre approche à clavier uniquement. Il est possible (depuis la version 13.1) d'utiliser les raccourcis Alt+ J/ Shift+ Alt+ J( Ctrl+ Gpour OS X) pour créer plusieurs carets. Alt+ Jsélectionne l'occurrence suivante du texte actuellement sélectionné et ajoute un autre curseur.

  1. Sélectionnez le premier point-virgule

entrez la description de l'image ici

  1. Puis appuyez sur Alt+ Jquatre fois

entrez la description de l'image ici

  1. Modifiez ce que vous voulez

entrez la description de l'image ici

  1. Appuyez sur Escpour revenir à la première ligne.

entrez la description de l'image ici


5
Dieu, j'ai vécu sans cette fonctionnalité pendant un an! Merci beaucoup!
coffman21

27

Placez le curseur à la fin

Windows: CTRL + CTRL(Maintenir) +↑ / ↓

Mac: option + option(Maintenir) + ↑ / ↓.

Pour placer le curseur à la fin des lignes: déplacez le curseur vers la ligne supérieure, clonez vers le bas et cliquez END.

Modifier la touche de raccourci multi-caret

Pour ajouter un Keymap personnalisé, CTRL+ SHIFT+ A, tapez keymapet cliquez sur celui avec Settingscomme sous-texte. Recherchez Clone Caret Aboveet Clone Caret Below.

J'ai mappé le mien à ALT+ SHIFT+ ↑ / ↓sur Windows et + ↑ / ↓sur Mac.

Prime

Essayez de tenir des combinaisons de CTRL, SHIFTet des flèches pour le pouvoir de sélection améliorée.


1
Merci pour le commentaire 'END', idéal pour les affectations courantes dans des variables de différentes longueurs.
Keegan 82

1
Cela devrait être la réponse car c'est la réponse la plus complète et la plus précise. +1.
Ariel Mirra

une autre façon est de maintenir "alt" et de continuer à appuyer sur "j", cela continuera d'ajouter des lignes à la sélection multiligne.
gaurav le

13

Le mode colonne fonctionne très bien: sélectionnez d'abord toutes les lignes en mode colonne, puis appuyez sur FIN: chaque curseur sautera à la fin de la ligne respective.

Sous Linux ( PAS DE SOURIS NÉCESSAIRE ):

  1. ALT+ SHIFT+ INSERTpour entrer en mode bloc

    entrée en mode d'édition de colonne

  2. SHIFT + UPou SHIFT + DOWNpour sélectionner plusieurs lignes

    entrez la description de l'image ici

  3. END pour sauter à la fin de chaque ligne

    entrez la description de l'image ici

  4. maintenant tapez foo, il l'ajoutera à chaque ligne:

    entrez la description de l'image ici

  5. Désélectionnez maintenant tout avec ESCAPEet repassez en mode de sélection normal avec ALT + SHIFT + INSERT.


9

Vous pouvez également faire une sélection de bloc de code vertical en cliquant sur la molette de la souris et en faisant glisser :

entrez la description de l'image ici


8

Sélectionnez la prochaine occurrence:

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

Désélectionner l'occurrence:

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

Sélectionnez toutes les occurrences:

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

pour plus de référence: lien


Le point avec (left) Alt + Jest que vous devez d'abord sélectionner le code.
ALIZEYN

7

J'utilise juste les macros pour ce genre de chose. Je commence à enregistrer la macro, je le fais une fois, puis je lis la macro sur chaque ligne que je souhaite modifier. Vous seriez étonné de voir à quel point vous pouvez obtenir de fantaisie avec la fonction d'enregistrement / lecture de macro.


Jeter les macros peut être très pratique pour effectuer ce genre de changements. Comment vous le décrivez est exactement ce que je ferais si je faisais ces changements dans l'éditeur Zeus.
jussij

Si les lignes sont toutes regroupées comme ça, enregistrez la macro pour déplacer également le curseur sur la ligne suivante, il vous suffit de commencer à exécuter la macro sur la première ligne et de répéter autant de fois que vous le souhaitez.
weiji le

Comment voulez-vous dire que vous pouvez "répéter autant de fois que vous voulez"? Existe-t-il un moyen de répéter automatiquement une macro?
pypmannetjies

Edition-> Macros-> Lire la dernière macro. Je l'ai mappé sur F12, mais j'ai une liaison de clé non standard. Je fais la macro une fois et je commence à frapper F12 encore et encore.
Chris Kessel

les macros sont bonnes, mais si j'utilise ideavim sur intellij, les macros ne peuvent pas résoudre le raccourci de vim
Amitābha

5

Il m'a fallu un certain temps pour le savoir, mais sur un Mac, vous pouvez appuyer deux fois Option(appuyez une fois, relâchez, appuyez à nouveau, maintenez-le enfoncé) et utilisez les touches Up/ Downpour créer / supprimer des carets comme vous le souhaitez.

Vous pouvez également maintenir Shift+ Optionet cliquer pour créer / supprimer des caractères insérés à des points spécifiques.


C'est génial, mais y a-t-il un moyen de le faire et de sélectionner jusqu'à la fin du fichier? Sinon, je dois faire défiler le tout en utilisant la flèche et nous avons des fichiers volumineux.
Jackie le


3

Dans ce cas, vous pouvez également sélectionner simplement le morceau de code dans lequel vous souhaitez effectuer cette opération et effectuer un remplacement. Remplacez:

";

par:

" + "foo";

Donc, au cas où vous ne le sauriez pas: si vous avez sélectionné du texte pendant que vous effectuez un remplacement (Ctrl + R ou Cmd + R), il ne s'appliquera qu'au morceau de texte sélectionné.


2

Maintenez ALT et utilisez la souris pour cliquer et faire glisser




1

Pour les versions plus récentes, utilisez: Alt+ Shift+Insert


1
fonctionne parfaitement! grâce @Meysam
Gaurav

une autre façon est de maintenir "alt" et de continuer à appuyer sur "j", cela continuera d'ajouter des lignes à la sélection multiligne.
gaurav le

0

Ce que j'utilise habituellement (NetBeans, mais je pense qu'il est simple à utiliser dans n'importe quel IDE) est find&replace.

Tu viens de trouver ;\n et de le remplacer par + $foo;\nalors vous ne vous appliquez pas à TOUTES les lignes, mais vous placez le curseur sur la première ligne et vous appuyez simplement sur le bouton "remplacer" (dépend de votre IDE je suppose) 7 fois pour changer 7 lignes en un rien de temps. Facile et simple et cela devrait être fait avec l'IDE le plus basique et le plus avancé que vous puissiez trouver.

EDIT: Dans IntelliJ (je ne sais pas si cela fonctionne également dans d'autres IDE), vous pouvez utiliser votre recherche et remplacement d'expressions rationnelles dans la sélection uniquement pour pouvoir utiliser "remplacer tout"


Ofc il y a des cas où vous ne pouvez pas appliquer cette méthode, lorsque les lignes sont totalement différentes ou quelque chose du genre, mais je pense que vous ne pouvez pas faire grand-chose à propos de cette situation, même avec des méthodes avancées.
Srneczek

Alors pourquoi -1? J'ai répondu à la question qu'il a posée. -1 la question si vous pensez que c'est stupide, pas la bonne réponse. La réponse acceptée avec macro est à mon avis une méthode plus lente pour être honnête.
Srneczek


0

Toutes les réponses ci-dessus sont excellentes, mais si vous voulez une édition multiligne à la fin des lignes, vous devez appuyer sur la touche "Fin" pendant que votre sélection multiligne est active.

Pour Mac, la séquence de commande sera:

shift option click # sélectionner un ensemble de lignes

command right arrow # aller à la fin des lignes

Cela fera une sélection multiligne à la fin de la ligne et vous pourrez la modifier si nécessaire

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.