web-dev-qa-db-de.com

sublime Textauswahl zuerst in jeder Zeile

In Vim gibt es eine wirklich nette Funktion, um das erste Vorkommen in jeder Zeile zu finden bzw. zu ersetzen. Dies ist afaik tatsächlich das Standardverhalten. Wie kann ich in sublime Text dasselbe Verhalten erzielen? 

Ich muss in der Lage sein, das ERSTE (und das erste!) Zeichen zu markieren/zu finden, z. '=' in jeder Zeile, so dass ich problemlos markieren, kopieren und ausschneiden kann, was vorher und was hinter diesem bestimmten Zeichen steht. Allerdings kann es in jeder Zeile viele dieser Charaktere geben.

Konkretes Beispiel:

Ich habe eine lange Liste von Java-Eigenschaften im Format:

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>

Ich möchte das erste "=" in jeder Zeile markieren, um den gesamten vorhergehenden Text (unabhängig von der Textmenge vor dem "=") auswählen zu können, um den Text auszuschneiden oder zu kopieren. Das Ergebnis einer solchen Aktion wäre:

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

Angenommen, Sie haben den folgenden Text:

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>

Drücken Sie Ctrl + F (oder klicken Sie auf Suchen-> Suchen)

Aktivieren Sie reguläre Ausdrücke

Geben Sie im Suchfeld Folgendes ein: ^.*?(?==)

Preess Alt + Enter (oder klicken Sie auf Alle suchen)

Jetzt muss der gesamte Text vor = nur noch kopiert werden.

17
Hugo Corrá

Ich habe tatsächlich ein großartiges Plugin namens SelectUntil geschrieben, das genau dieses Problem behebt: https://github.com/xavi-/sublime-selectuntil

Sobald es installiert ist, können Sie Folgendes tun

  • Wählen Sie alle Zeilen aus, die Sie bearbeiten oder teilweise kopieren möchten
  • Drücken Sie Cmd/Ctrl + Shift + L - Dies gibt jeder Zeile einen eigenen Cursor.
  • Bringen Sie jeden Cursor an den Anfang seiner Zeile, indem Sie drücken Home oder Ctrl + A wenn Sie OSX verwenden
  • Drücken Sie Ctrl/Alt + Shift + S um SelectUntil zu aktivieren
  • Weisen Sie SelectUntil an, durch Eingabe eine Auswahl zu treffen, bis das Gleichheitszeichen erreicht ist = + Enter
  • Schlagen shift +  um das Gleichheitszeichen abzuwählen
  • An dieser Stelle sollten die Namen aller Eigenschaften ausgewählt sein, damit Sie kopieren/einfügen können, wie Sie möchten

Die Erfahrung sollte ungefähr so ​​aussehen:

enter image description here

27
Xavi

Habe das probiert und es scheint zu funktionieren:

Regex-Suche mit ^ (. *) (STRING_TO_MATCH)

\ 1 gibt alles vor dem Match an,\2 gibt das Match selbst an.

Sie könnten auch ^ (. *) (STRING_TO_MATCH) (. *) Verwenden und dann wäre\3 alles danach.

Bearbeiten - Wenn Sie suchen und kopieren möchten, habe ich Folgendes versucht: ^[^CHAR]*

Dies wird alles vom Anfang der Zeile bis zu und nicht einschließlich Ihres Charakters finden. Von dort können Sie mit der rechten Maustaste klicken, um zu kopieren. Ich habe keine Tastenkombination gefunden, da das Suchfeld den Fokus hat. Vielleicht können Sie es herausfinden.

3
NTyler

Angenommen, Sie haben den folgenden Text:

AAAABBBCCCC
ABC
BBBAAACCC
ABCABCABC

..und Sie möchten jedes erste Vorkommen von A in jeder Zeile durch X ersetzen:

Drücken Sie Ctrl + H (oder klicken Sie auf Suchen-> Ersetzen)

Finde was: A(.*)

Ersetzen durch: X\1

Klicken Sie dann auf Alle ersetzen.

1
Hugo Corrá

[STRG + A]; [STRG + Umschalt + L]; [Zuhause]

erstellen Sie eine AutoItInputMacro.exe-Zuordnung, die [Home] 1 entspricht. Drücken Sie die Taste GG. Kein erneuter Kampf.

Für dieses Problem können Sie die Befehlszeile cc.gbc 1/=/ von ConyEdit (einem Plugin) verwenden, um den Text vor der ersten Spalte der Regex-Übereinstimmung abzurufen.

0
Dick

Wählen Sie alle mit Ctrl + A aus, drücken Sie Ctrl + Shift + L und gehen Sie schließlich wie "picture et voila!" Zu "Auswahl-> Auswahl umkehren":  Invert Selection

0