Testo sublime: trova e sostituisci all'interno della selezione


21

Sublime Text 2 consente all'utente di eseguire la ricerca e la sostituzione, limitatamente alla selezione corrente?

Dovrei pensare che debba, solo che dopo diverse ricerche non sono stato in grado di scoprire come eseguirlo.

Risposte:


23

C'è un pulsante per quello in ST2.

Immagine dello schermo


4
È vero, c'è un pulsante. Ma come lo usi? In particolare, come si imposta "la selezione"? Dalla mia esperienza ST2 utilizza la selezione dal momento in cui hai aperto la barra di ricerca. Quindi, se la barra è già aperta, devi prima chiuderla (Esc), quindi selezionare l'intervallo di testo che si desidera esaminare e quindi aprirlo di nuovo (Ctrl + F o Ctrl + H). Suggerimento professionale: se la selezione si estende su più righe, non sostituirà l'espressione di ricerca corrente.
Robert,

3
Cmd + Opt + F su mac per aprire la console di ricerca e sostituzione.
Michea

2
Sono completamente perplesso sul perché non ci siano scorciatoie da tastiera per quel "In selection", soprattutto perché c'è per tutte le altre opzioni! Devo davvero muovere la mano sul mouse per abilitarlo? Sembra andare contro tutte le ST sta per ... (Sto usando ST3)
TheStoryCoder

5
@TheStoryCoder sì, è stupido che non ci siano scorciatoie da tastiera, ma si è rivelato facile crearne uno, tranne per il fatto che il nome del comando non è stato documentato ma sono stato fortunato e ho indovinato. Ecco il codice da aggiungere ai tasti dell'utente: {"keys": ["alt + y"], "command": "toggle_in_selection", "context": [{"key": "setting.is_widget", "operator" : "uguale", "operando": vero}]},
Owen_R

Una nota per altre persone che erano confuse come me: quando selezioni più righe di testo, quindi premi Ctrl + H (che apre Trova e sostituisci) e inizia a digitare nel campo "Trova che cosa", le linee selezionate smettono di apparire selezionate, ma lo sono ancora . Se non fosse stato per quel problema, non avrei nemmeno cercato una soluzione e trovato questo post. A proposito, mi sembra di ricordare che il problema non c'era prima, quindi forse dopo un riavvio o qualcosa scomparirà.
Stefan Monov,

7

Se la selezione include un'interruzione di riga, il pulsante "all'interno della selezione" verrà attivato automaticamente - su ST2

L'attivazione intelligente è stata persa su ST3, sfortunatamente. Puoi seguirlo qui http://www.sublimetext.com/forum/viewtopic.php?f=3&t=11679


10
È ora possibile ripristinare questa funzionalità utilizzando: "auto_find_in_selection": true
mdrozdziel

Come posso invocarlo automaticamente quando non include un'interruzione di riga? Per esempio quando hai una linea davvero lunga che abbraccia molte "file"? Ogni volta che ho selezionato quella linea e invoco la ricerca, disabilita l'opzione "in selection".
user2544542

6

Ecco cosa devi aggiungere ai tasti dell'utente:

{ "keys": ["alt+y"], "command": "toggle_in_selection", "context":
    [
        { "key": "setting.is_widget", "operator": "equal", "operand": true }
    ]
},

Sì, è stupido che non sia impostato un set di tasti predefinito.

Anche il nome del comando " toggle_in_selection" non è stato documentato, ma ho indovinato e sono stato fortunato.


MODIFICA DA AGGIUNGERE:

/*
btw, the way i want to use find by default
(actually, i use replace by default, but same dif),
is for "in_selection" to be true by default,
*unless* the selection is empty.
(
the default is that "in_selection" is *false* by default,
unless the selection contains a newline.
)
i finally got around to digging up how to get that,
which is apparently by changing the *keybindings* you use to pop open the find(/replace) panel?
*/
    { "keys": ["ctrl+f"], "command": "show_panel", "args": {"panel": "replace", "in_selection": true}},
    { "keys": ["ctrl+f"], "command": "show_panel", "args": {"panel": "replace", "in_selection": false},
    "context":
        [
            { "key": "selection_empty", "operator": "equal", "operand": true}
        ]
    },

Il keybinding esiste già per impostazione predefinita.
elsadek,

Huh. Mi chiedo perché mi mancasse, quindi ... le uniche cose "toggle_" che avevo nei miei collegamenti predefiniti erano:toggle_side_bar toggle_full_screen toggle_distraction_free toggle_overwrite toggle_record_macro toggle_setting toggle_comment toggle_case_sensitive toggle_regex toggle_whole_word toggle_preserve_case
Owen_R

3

(con collegamenti specifici per Mac OS X) da sostituire some namecon new name:

  1. posiziona il cursore sopra il testo
  2. Trova some name:, cmdfdigitare some name(a volte è necessario premere return)
  3. Specificare sostituzione: shiftcmdr, tabtabper arrivare a sostituire il campo, il tipo new name, non premetereturn
  4. ripetere altcmdefino al termine.

Qualcuno conosce un modo più veloce per farlo ?! È abbastanza ridicolo e inutilmente difficile da ricordare
AJP

vedi la risposta di @oliver-g - ST2 lo fa di default, e se lo hai disabilitato, fai clic ctrl+He lascialo su "Trova cosa:" c'è un pulsante intitolato "In selection"
Peter

2

Basta selezionare il testo che si desidera cercare, quindi fare clic su Sostituisci dal menu Trova. Lo farà automaticamente all'interno della tua selezione.


0

la chiave per lavorare con sostituisci all'interno della selezione è PRIMA di selezionare il testo quindi vai a trova> sostituisci quindi compila il testo per quello che troverai e sostituisci, quindi seleziona il pulsante "selezionato", quindi fai clic su "Sostituisci tutto". ..


0

Sto aggiungendo un'altra risposta poiché la soluzione migliore e più utile (secondo me) è stata nascosta in un commento e mi è quasi sfuggita (grazie @mdrozdziel).

Seleziona il testo in cui vuoi cercare, premi Shift+ Hper visualizzare la barra degli strumenti Trova e Sostituisci. C'è un pulsante a destra della banca di pulsanti sulla sinistra che attiverà la ricerca all'interno della selezione.

Questo è disattivata per impostazione predefinita in ST3, ma è possibile impostare per default su quando si seleziona più di una riga con l'aggiunta "auto_find_in_selection": trueal file di preferenze (trovata inserendo Alt, N, S, Enter).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.