Notepad ++ Multi édition


112

Comment puis-je avoir plusieurs curseurs dans Notepad ++?

J'aurai quelques valeurs délimitées par des tabulations. J'ai besoin d'écrire une requête pour toutes ces valeurs. Par exemple, si j'obtiens un fichier Excel avec des valeurs comme celle-ci:

1234 xyz pqr
2345 sdf kkk
...

Je veux copier tout ce morceau de données dans Notepad ++ et écrire la requête, en insérant toutes les valeurs à la fois.

Comme ça:

Insert into tbl (1234, xyz) where clm = 'pqr'
Insert into tbl (2345, sdf) where clm = 'kkk'
...

J'avais l'habitude de le faire avec mon éditeur de texte précédent Ultraedit. Cela peut-il être fait en utilisant Notepad ++?


2
Euh ... Utilisez SublimeText. :)
Praveen Kumar Purushothaman

Je fais cela tout le temps avec Notepad ++, mais je suis coincé avec UltraEdit sur ce travail ... Comment faire cela avec UltraEdit? :)
Ron Jensen - Nous sommes tous Monica

Réponses:


166

Oui: maintenez simplement la Alttouche enfoncée, cliquez et faites glisser pour sélectionner les lignes dont vous souhaitez modifier les colonnes et commencez à taper.

Vous pouvez également aller dans Paramètres> Préférences ... , et dans l' onglet Edition , activer la multi-édition, pour permettre la sélection de plusieurs régions ou colonnes de texte distinctes à modifier à la fois.

C'est beaucoup plus intuitif, car vous pouvez voir vos modifications en direct au fur et à mesure que vous tapez.


2013 ici, v5.2: Il n'y a plus (plus) d'onglet d'édition ou d'option d'édition multiple.
Wouter

@Wouter: Il est toujours là pour moi dans la v6.2 ... s'il n'est pas présent dans la v5.2, alors quelque chose d'autre peut être erroné, mais je ne peux pas en dire davantage.
BoltClock

@BoltClock: Cool! Quelque part entre la version v5.2 et v6.2, cette fonctionnalité doit avoir été ajoutée. Ou peut-être qu'il s'est perdu momentanément quelque part avant cela :)
Wouter

1
Une démo peut être vue ici: notepad-plus-plus.org/features/multi-editing.html . Cela ressemble à une ancienne version, mais je l'ai essayé dans la v6.4.5 et cela a bien fonctionné.
brazilianldsjaguar

10
alt+up/downN'a pas travaillé pour moi. J'ai dû utiliser à la alt+shift+up/downplace. v6.9.1
AXO

51

À la position où vous souhaitez ajouter du texte, procédez comme suit:

Shift+ Alt+down arrow

et sélectionnez les lignes souhaitées. Tapez ensuite. Le texte que vous tapez est inséré sur toutes les lignes que vous avez sélectionnées.


1
Vraiment la meilleure réponse ici.
Etienne Gautier

c'est encore meilleure réponse! n'oubliez pas d'utiliser shift + alt pour toute action comme couper, copier!
gaurav

Je recherche cette fonctionnalité depuis longtemps, merci!
michal.hubczyk le

46

Vous pouvez ajouter / modifier du contenu sur plusieurs lignes en utilisant le bouton de contrôle. Il s'agit d'une fonctionnalité d'édition multiple dans Notepad ++, nous devons l'activer à partir des paramètres. Appuyez et maintenez le contrôle, sélectionnez les endroits où vous souhaitez entrer du texte, relâchez le contrôle et commencez à taper, cela mettra à jour le texte à tous les endroits sélectionnés précédemment.

entrez la description de l'image ici

Réf: http://notepad-plus-plus.org/features/multi-editing.html


1
J'adore le gif que tu as fait. Merci pour cela.
Julien

C'est précisément ce que je voulais. Je vous remercie.
Sol

23

Notepad ++ gère également plusieurs curseurs maintenant.

Allez dans Paramètres => Préférences => Edition et cochez "Activer" dans "Paramètres d'édition multiples" Ensuite, utilisez simplement Ctrl + clic pour utiliser plusieurs curseurs.

Démo de fonctionnalités sur le site officiel ici : https://notepad-plus-plus.org/features/multi-editing.html


Réponse2 impeccable
Gaurav

22

Vous pouvez utiliser Edit > Column Editor...pour insérer du texte aux lignes actuelles et suivantes. Le raccourci est Alt + C.


8

Notepad ++ dispose d'un puissant moteur de regex, capable de rechercher et de remplacer des modèles à volonté.

Dans votre scénario:

  1. Cliquez sur l'élément de menu Rechercher \ Remplacer ...

  2. Remplissez le champ "Trouver quoi" avec le modèle de recherche:

    ^(\d{4})\s+(\w{3})\s+(\w{3})$
    
  3. Remplissez le motif de remplacement:

    Insert into tbl (\1, \2) where clm = \3
    
  4. Cliquez sur le Replace Allbouton.

Et c'est tout.

Capture d'écran de la fenêtre de remplacement de NotePad ++


J'utilise regex pour ces types de modifications depuis plus de 10 ans, mais beaucoup de gens corrigent les expressions régulières déroutantes ou difficiles à apprendre
raider33

6

La méthode la plus simple pour résoudre votre problème (sans passer par un autre éditeur ou apprendre une regex) est d'enregistrer une macro.

  • Placez votre curseur au début de votre texte, cliquez sur le bouton «Enregistrer» dans le ruban, puis ne modifiez qu'une seule ligne de texte. Vous ne pouvez utiliser que les touches fléchées ou ctrl + flèches pour vous déplacer autour des caractères / mots plutôt que de cliquer avec votre souris. Les touches «accueil» et «fin» sont également utiles.
  • Lorsque vous avez terminé avec cette ligne, déplacez votre curseur (encore une fois sans utiliser la souris) au début de la ligne suivante.
  • Cliquez sur le bouton «arrêter l'enregistrement».
  • Cliquez sur le bouton 'play macro' pour vérifier qu'il fonctionne sur la ligne suivante comme prévu.
  • Cliquez sur «exécuter la macro plusieurs fois» pour recommencer, et encore et encore ...: P
Un avantage de ceci par rapport aux curseurs «multi-édition» est que vous n'avez pas besoin de cliquer et de placer manuellement les curseurs sur chaque ligne. Le deuxième avantage est que vous pouvez travailler avec des données délimitées par des tabulations qui n'ont pas une taille / longueur cohérente - utilisez simplement ctrl + gauche / droite pour sauter des mots.

Honnêtement, les macros en N ++ ont sauvé environ un an de ma vie.


1

Notepad ++ n'a que l'édition de colonnes. Ce n'est pas complètement la même chose que plusieurs curseurs.

Sublime Text a une merveilleuse implémentation de ceci, cela vaut peut-être la peine d'être vérifié ...
C'est un éditeur relativement récent (2011) qui gagne rapidement en popularité: http://www.google.com/trends/explore#q=Notepad% 2B% 2B% 2C% 20Sublime% 20Texte & cmpt = q

Edit: Apparemment, quelque part autour de Notepad ++ version 6.x, l'édition multi-curseurs a été ajoutée, mais il y a encore quelques fonctionnalités plus avancées pour cela dans Sublime, comme "sélectionner l'occurrence suivante".


l'édition multi-curseurs de npp est loin d'être aussi bonne que l'édition multiligne de sublime.
th1rdey3

1
Correction: l'édition multi-curseurs de npp est loin d'être aussi bonne que l'édition multiligne de sublime par défaut . La bibliothèque scintilla permet toutes les fonctionnalités prises en charge par sublime. Tout utilisateur peut télécharger un plugin tel que nppscripts ou pythonscript pour accéder au framework npp sous-jacent et mapper ces scripts sur des raccourcis clavier, émulant toutes les commandes sublimes. Pour ceux qui ne veulent pas se soucier de configurer leur éditeur, payez par tous les moyens pour sublime.
user2867288

Je comprends d'où vous venez, mais il n'est pas juste de demander à un utilisateur régulier de devoir créer un script dans le cadre de l'éditeur sous-jacent pour une fonctionnalité normale. Je suis d'accord avec vous si un plugin le faisait déjà (si j'avais plus de temps, j'en créerais un). De plus, cet article récent sourceforge.net/p/scintilla/feature-requests/1085 dit que "surligner ensuite" pourrait être facile à faire, mais vous ne pouvez toujours pas avoir de fonction de touche fléchée. Je me demande à quel point le "skip" serait facile à implémenter également? Mettez en surbrillance suivant, passez au suivant et les flèches peuvent parfois être utiles.
ShawnFumo

0

Vous pouvez utiliser le plugin ConyEdit pour ce faire. Avec ConyEdit en arrière-plan, procédez comme suit:

  1. utilisez la ligne de commande cc.spc /\t/ apour diviser le texte en colonnes et les stocker dans un tableau à deux dimensions.
  2. utilisez la commande cc.ppour imprimer, en utilisant le contenu du tableau.
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.