web-dev-qa-db-fra.com

texte sublime sélectionner en premier dans chaque ligne

Dans Vim, il existe une fonctionnalité vraiment agréable pour trouver/remplacer la première occurrence dans chaque ligne. C'est peut-être le comportement par défaut. Comment puis-je obtenir le même comportement dans un texte sublime? 

Je dois pouvoir marquer/trouver le PREMIER (et le premier seulement!), Par exemple. '=', dans chaque ligne, afin que je puisse facilement marquer/copier/couper ce qui précède et ce qui suit ce caractère spécifique. Remarquez, il peut y avoir beaucoup de ce caractère spécifique dans chaque ligne.

Exemple concret:

J'ai une longue liste de propriétés Java sous la forme:

my.property.link1=<a href="asdfs">Link 1</a>
my.property.link22=<a href="asdfs">Link 22</a>
my.property.link333=<a href="asdfs">Link 333</a>
my.property.link4444=<a href="asdfs">Link 4444</a>

Je veux marquer le premier "=" dans chaque ligne pour pouvoir sélectionner tout le texte précédent (indépendamment de la quantité de texte précédant le "=") pour couper ou copier le texte. Le résultat de cette action serait:

my.property.link1
my.property.link22
my.property.link333
my.property.link4444
13
Hoof

En supposant que vous ayez le texte suivant:

my.property.link1=<a href="asdfs">Link 1</a>
my.property.link22=<a href="asdfs">Link 22</a>
my.property.link333=<a href="asdfs">Link 333</a>
my.property.link4444=<a href="asdfs">Link 4444</a>

Presse Ctrl + F (ou cliquez sur Rechercher-> Rechercher)

Activer les expressions régulières

Tapez dans le champ de recherche: ^.*?(?==)

Preess Alt + Enter (ou cliquez sur Rechercher tout)

Maintenant tout le texte avant = est sélectionné, il vous suffit de le copier.

17
Hugo Corrá

J'ai en fait écrit un plugin sublime appelé SelectUntil qui répond exactement à ce problème: https://github.com/xavi-/sublime-selectuntil

Une fois installé, vous pouvez faire ce qui suit

  • Sélectionnez toute la ligne que vous souhaitez modifier ou copier partiellement
  • Presse Cmd/Ctrl + Shift + L - cela donne à chaque ligne son propre curseur.
  • Amenez chaque curseur au début de sa ligne en appuyant sur Home ou Ctrl + A si vous utilisez OSX
  • Presse Ctrl/Alt + Shift + S activer SelectUntil
  • Dites à SelectUntil de sélectionner jusqu'au signe égal en tapant = + Enter
  • Frappé shift +  désélectionner le signe égal
  • À ce stade, les noms de toutes les propriétés doivent être sélectionnés pour que vous puissiez les copier/coller à votre guise.

L'expérience devrait ressembler à ceci:

enter image description here

27
Xavi

J'ai essayé et ça a l'air de marcher:

Rechercher une expression régulière en utilisant ^ (. *) (STRING_TO_MATCH)

\ 1 donnera tout ce qui précède votre match,\2 donne le match lui-même.

Vous pouvez également utiliser ^ (. *) (STRING_TO_MATCH) (. *), Puis\3 sera tout après.

Modifier - si vous souhaitez sélectionner et copier, j'ai essayé ceci: ^[^CHAR]*

Cela trouvera tout depuis le début de la ligne jusqu'à et sans votre personnage. De là, vous pouvez faire un clic droit pour copier. Je n'ai pas trouvé de séquence de frappe pour le faire depuis le panneau de recherche a le focus, peut-être que vous pouvez le comprendre.

3
NTyler

En supposant que vous ayez le texte suivant:

AAAABBBCCCC
ABC
BBBAAACCC
ABCABCABC

..et vous voulez remplacer chaque première occurrence de A dans chaque ligne par X:

Presse Ctrl + H (ou cliquez sur Rechercher-> Remplacer)

Trouver quoi: A(.*)

Remplacer par: X\1

Puis cliquez sur remplacer tout.

1
Hugo Corrá

Pour ce problème, vous pouvez utiliser la ligne de commande cc.gbc 1/=/ de ConyEdit (un plugin) pour obtenir le texte avant la première colonne de correspondance regex.

0
Dick

Sélectionnez tout avec Ctrl + A puis appuyez sur Ctrl + Shift + L et enfin allez dans "Sélection-> Inverser la sélection" comme sur la photo et Voila!:  Invert Selection

0
Maximiliano Becerra