2013-04-15 2 views
13

In Vim c'è una funzione davvero piacevole per trovare/sostituire la prima occorrenza in ogni riga. Questo è afaik in realtà il comportamento predefinito. Come posso ottenere lo stesso comportamento nel testo sublime?testo sublime seleziona prima di ogni riga

Devo essere in grado di contrassegnare/trovare il carattere PRIMO (e il primo solo!), Ad es. '=', in ogni riga, in modo che possa facilmente contrassegnare/copiare/tagliare ciò che è prima e ciò che è dopo quel carattere specifico. Intendiamoci, potrebbero esserci molti di questi caratteri specifici in ogni riga.

Calcestruzzo esempio:

ho una lunga lista di proprietà Java sotto forma:

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> 

Voglio segnare il primo "=" in ogni riga, per essere in grado di selezionare tutte le testo precedente (indifferente dalla quantità di testo che precede il "=") per tagliare o copiare il testo. La pasta-risultato di tale azione potrebbe essere:

my.property.link1 
my.property.link22 
my.property.link333 
my.property.link4444 

risposta

16

Supponendo di avere il seguente testo:

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> 

Press Ctrl +F (o fare clic su Trova-> Trova)

Abilita le espressioni regolari

tipo nel campo di ricerca : ^.*?(?==)

Preess Alt +Enter (o fare clic su Trova Tutti)

Ora viene selezionato tutto il testo prima di =, è sufficiente copiarlo.

+0

Superbo! Funziona esattamente come volevo! :) – Hoof

3

provato questo e sembra funzionare:

Regex trovare usando^(. *) (STRING_TO_MATCH)

\ 1 darà tutte le roba prima della partita, \ 2 dà la partita stessa.

Si potrebbe anche usare^(. *) (STRING_TO_MATCH) (. *) E poi \ 3 sarebbe tutto dopo.

Edit - se stai cercando di selezionare e copiare, ho provato questo: ^[^CHAR]*

Questo sarà trovare di tutto, a partire dall'inizio della linea fino a e non compreso il vostro personaggio. Da lì è possibile fare clic destro per copiare. Non ho trovato una sequenza di tasti per farlo poiché il pannello di ricerca ha il focus, forse puoi capirlo.

+0

Non riesco a farlo funzionare. Bare in mente, che ho bisogno di fare una selezione dopo il ritrovamento ... – Hoof

+0

vedere la mia modifica sopra – NTyler

0

Supponendo di avere il seguente testo:

AAAABBBCCCC 
ABC 
BBBAAACCC 
ABCABCABC 

..e si desidera sostituire ogni prima occorrenza di A in ogni riga da X:

Press Ctrl +H (o clicca Trova-> Sostituisci)

Trova: A(.*)

Sostituisci con: X\1

Quindi fare clic su Sostituisci tutto.

+0

che finirebbe con: 'X X BBBX rinfusa Probabilmente si desidera Sostituisci con: X \ 1 – NTyler

+0

@NTyler E 'vero, ho dimenticato il \ 1 ... grazie ! –

+0

Funziona - quando si sostituisce un determinato testo. Tuttavia, voglio segnare tutto il testo che precede la partita, per poter copiare/incollare in un altro documento ... – Hoof

26

realtà ho scritto un plugin sublime chiamata SelectUntil che risolve questo problema esatto: https://github.com/xavi-/sublime-selectuntil

Una volta che è installato è possibile effettuare le seguenti operazioni

  • Seleziona tutti la linea che si desidera modificare o parzialmente copiare
  • Press Cmd/Ctrl +Maiusc +L - questo dà ogni linea è proprio cursore.
  • portare ogni cursore all'inizio di essa la linea premendo casa o Ctrl + A se si sta utilizzando OSX
  • Press Ctrl/Alt + Maiusc + S per attivare SelectUntil
  • Dillo SelectUntil per selezionare fino a quando il segno di uguale digitando = + Inserisci
  • Hit spostare + per deselezionare il segno di uguale
  • A questo punto i nomi di tutte le proprietà dovrebbero essere selezionati in modo da poter copiare/incollare come vuoi

l'esperienza dovrebbe simile a questa:

enter image description here

+2

Questo è davvero uno strumento utile –

+0

Concordo, vorrei avere la pazienza (o la serendipity) di scrivere plugin per sublimi ogni volta che incontro una situazione in cui sarebbero utili. –

0

Seleziona tutti con Ctrl + A quindi premere Ctrl + Shift + L e finalmente andare t o "Selezione-> Inverti selezione" come l'immagine e Voila !: Invert Selection