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
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.
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
L'expérience devrait ressembler à ceci:
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.
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.
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.