Passa al contenuto principale

Trova e sostituisci

Trova il testo in tutto il diagramma, porta a ciascuna corrispondenza nell’area di disegno ERD e sostituisce una sola corrispondenza o tutte.
Cerca in sette tipi di testo: nomi delle tabelle, commenti delle tabelle, nomi delle colonne, commenti delle colonne, memo, nomi degli indici e nomi dei gruppi di tabelle — vedere Cosa cerca.

Si trova in cima a Esplora, il pannello ancorato a sinistra dell’area di disegno ERD, tra la barra del titolo di Esplora e il suo albero. Non ha un titolo proprio. Dall’alto in basso contiene:

  • Il campo Trova, con le tre opzioni all’interno, alla sua estremità, e prima di esso la freccia Toggle Replace.
  • La riga Replace, inizialmente compressa — vedere Sostituzione.
  • Il contatore, poi le frecce su e giù che passano da una corrispondenza all’altra e il pulsante Search In a tre puntini.
  • I tipi di testo, che Search In espande.

Mentre il campo Trova contiene del testo, l’albero di Esplora mostra le corrispondenze — vedere I risultati.
Con un’area di disegno bassa, la ricerca mantiene tutta la sua altezza e l’albero sottostante occupa lo spazio rimanente e scorre.

Apertura di Trova e sostituisci in Esplora con ⌘ + F, passaggio tra le sei corrispondenze di member, poi, con Preserve Case attivo, sostituzione di tutte e sei con user (⌘ + Enter)

Apertura e chiusura​

Ctrl + F (Windows/Linux) o ⌘ + F (Mac) e la voce Toggle Explorer nella Ricerca rapida o nel menu contestuale dell’area di disegno aprono Esplora sulla ricerca. Il punto di inserimento passa al campo Trova con il testo selezionato e il testo di ricerca viene cercato di nuovo senza alcuna corrispondenza corrente.
Il pulsante Explorer della barra degli strumenti si limita ad aprire o chiudere il pannello. Non porta il punto di inserimento nel campo Trova e lascia invariati il testo di ricerca e la corrispondenza corrente.
Quando il tasto si limita a riportare il punto di inserimento in un pannello Esplora già visibile, come accade mentre è aperta la Ricerca rapida o una delle cinque finestre di dialogo descritte in Finestre di dialogo accanto al pannello, la corrispondenza corrente resta tale.

La chiusura di Esplora, l’effetto del tasto e delle due voci Toggle Explorer mentre il pannello è aperto e le finestre di dialogo che chiudono sono descritti in Apertura e chiusura nella pagina Esplora.
Quando si nasconde spiega come un’altra scheda e la modalità Zen lo nascondano e come il Visualizzatore differenze, il Viaggio nel tempo e l’anteprima del Layout automatico lo nascondano e ne impediscano l’apertura. Accanto all’area di disegno tratta il caso di un editor troppo stretto per mostrarlo.

Alla riapertura vengono mantenuti l’ultimo testo di ricerca e, con esso, il testo di sostituzione, le opzioni, i tipi di testo che erano attivi e lo stato espanso o compresso della riga Replace e dei tipi di testo.
Vengono mantenuti finché l’editor resta aperto e non sono salvati nel documento. Un editor appena aperto parte con tutte le opzioni disattivate, la riga Replace e i tipi di testo compressi e solo i quattro tipi di nome attivi — vedere Cosa cerca.

La barra di ricerca del browser​

Mentre l’editor ha il focus, Ctrl + F (Windows/Linux) o ⌘ + F (Mac) è gestito dall’editor in ogni scheda, anche nei suoi campi di testo, quindi la barra di ricerca del browser non si apre.
Il tasto passa al browser o all’host mentre è aperto il Visualizzatore differenze, il Viaggio nel tempo o l’anteprima del Layout automatico, e mentre il focus è fuori dall’editor.

  • App web e Google Drive: la barra di ricerca del browser si apre solo in questi due casi.
  • VS Code: l’estensione lascia disattivato il widget di ricerca proprio di VS Code nell’ERD Editor, quindi lì il tasto non lo apre mai.
  • Obsidian: il tasto raggiunge l’editor ogni volta che la scheda del diagramma è attiva, al posto del comando Search current file di Obsidian.
  • IDE JetBrains: se la mappa dei tasti dell’IDE riserva a sé Ctrl + F (Windows/Linux) o ⌘ + F (Mac), aprire la ricerca dalla voce Toggle Explorer nella Ricerca rapida o nel menu contestuale dell’area di disegno, o aprire Esplora con il pulsante Explorer della barra degli strumenti e fare clic nel campo Trova.

Una pagina che incorpora l’editor può spostare o rimuovere il tasto — vedere Modificare il tasto di scelta rapida.

Cosa cerca​

Sette pulsanti scelgono i tipi di testo in cui cercare, in questo ordine: Table names, Table comments, Column names, Column comments, Memos, Index names e Table group names.
Inizialmente sono compressi. Il pulsante Search In, alla fine della riga del contatore, li espande sotto quella riga e li comprime di nuovo, ed è evidenziato mentre sono visibili.
Un pulsante di tipo evidenziato è attivo. Fare clic su uno di essi per attivarlo o disattivarlo, e la ricerca viene eseguita di nuovo. Con tutti e sette disattivati, non viene trovato nulla.

La ricerca si apre la prima volta con i quattro tipi di nome, Table names, Column names, Index names e Table group names, quindi una ridenominazione non raggiunge commenti e memo, a meno che non vengano attivati.
I nomi degli indici sono i nomi degli indici nella scheda Indexes di Proprietà tabella, non le chiavi PK_ e UQ_ elencate sopra di essi.

Non viene cercato nient’altro: né i tipi di dati, né i valori predefiniti, né le colonne di un indice, né il nome del database, né lo Schema SQL con i suoi script Before tables e After tables, né il codice generato.
Un commento nascosto da un’opzione di visualizzazione delle tabelle viene comunque cercato. I memo nascosti con View Option → Memos e i gruppi di tabelle nascosti con View Option → Table Groups invece non vengono cercati, anche con il relativo pulsante attivo, quindi Replace All non riscrive mai un memo né rinomina un gruppo che non è visibile.

Opzioni​

Tre interruttori all’interno del campo Trova, alla sua estremità, cambiano il modo in cui il testo di ricerca trova le corrispondenze. Il loro nome compare nei tooltip e sono evidenziati quando sono attivi. Tutti e tre partono disattivati e la modifica di uno di essi avvia una nuova ricerca.

  • Match Case: se è disattivato, la corrispondenza non distingue tra maiuscole e minuscole.
  • Match Whole Word: una corrispondenza conta solo se non prosegue in una parola su nessuno dei due lati. Lettere, cifre e segni combinanti di qualsiasi sistema di scrittura contano come caratteri di parola, così come il trattino basso. user corrisponde quindi in user id e user.id, ma non all’interno di users, user_id o superuser. Un’estremità del testo di ricerca che non è essa stessa un carattere di parola, come il punto in .id, non richiede un confine di parola da quel lato.
  • Use Regular Expression: il testo di ricerca è un’espressione regolare JavaScript, sempre in modalità Unicode, quindi \p{L} funziona. ^ e $ corrispondono all’inizio e alla fine di ogni riga di un commento o di un memo su più righe e . non attraversa un’interruzione di riga. Sono accettate le sequenze di escape spesso digitate nei nomi, come \_ e \-.

Un’espressione regolare che non può essere analizzata, come user(, non trova nulla: il contatore mostra Invalid regular expression in rosso e il campo Trova ha un bordo rosso.
Match Case e Match Whole Word si applicano anche a un’espressione regolare. Una corrispondenza di lunghezza zero, come ^ da solo, non viene mai elencata.

Il testo semplice viene cercato durante la digitazione. Un’espressione regolare viene cercata quando la digitazione si interrompe, o subito quando si preme Enter, un pulsante di navigazione, Replace o Replace All, o si sceglie una riga che contiene una corrispondenza.
La ricerca non ha limiti di tempo, quindi un’espressione regolare che esegue molto backtracking può rendere l’editor non reattivo finché non termina.

Un quarto interruttore, Preserve Case, si trova all’interno del campo Replace, alla sua estremità, quindi è visibile solo mentre la riga Replace è espansa. Parte disattivato. Non cambia nulla di ciò che viene trovato, ma solo il modo in cui Replace e Replace All scrivono la sostituzione — vedere Sostituzione. Attivarlo o disattivarlo non avvia alcuna ricerca e la corrispondenza corrente resta tale.

I risultati​

Il contatore, all’inizio della riga sotto i campi, indica la posizione corrente. È vuoto mentre il campo Trova è vuoto.

ContatoreQuando
No resultsNon c’è alcuna corrispondenza.
12 matchesPrima di spostarsi su una di esse; 1 match se ce n’è una sola.
3 of 12La terza corrispondenza è quella corrente.
Invalid regular expressionL’espressione regolare non può essere analizzata.
Replaced 12 matchesReplace All ha modificato quel numero di corrispondenze; Replaced 1 match se è una sola.
No changesReplace All non ha modificato nulla.
No more matchesUna serie di Replace è tornata al punto di partenza — vedere Sostituzione.

Replaced …, No changes e No more matches lasciano il posto al contatore alla ricerca o allo spostamento successivo, compresa la ricerca avviata da una modifica o da un annullamento.

Mentre il campo Trova contiene del testo, l’albero di Esplora mostra i risultati invece dell’intero diagramma: solo le righe che contengono una corrispondenza e le righe sopra di esse. Quando non c’è alcuna corrispondenza, o l’espressione regolare non può essere analizzata, è vuoto. Eliminando il testo di ricerca torna l’intero albero, compresso com’era prima.

  • Tables, Table Groups e Memos compaiono solo quando contengono una corrispondenza e il conteggio di ogni cartella è il numero di righe direttamente sotto di essa nei risultati.
  • Sotto Tables compaiono le tabelle che contengono una corrispondenza, in ordine di nome. Sotto ogni tabella compaiono una riga per ogni corrispondenza nel suo commento, poi una cartella Columns con le colonne che contengono una corrispondenza, nell’ordine delle colonne, ciascuna con una riga per ogni corrispondenza nel suo commento, poi una cartella Indexes con gli indici il cui nome corrisponde. Non c’è una cartella Foreign Keys.
  • Sotto Table Groups compaiono i gruppi il cui nome corrisponde, in ordine di nome, senza le loro tabelle. Una tabella trovata compare sotto Tables.
  • Sotto Memos compaiono i memo che contengono una corrispondenza, nell’ordine del documento, ciascuno indicato dalla sua prima riga e con una riga per ogni corrispondenza al suo interno.

Una corrispondenza in un nome è evidenziata nella riga di quel nome, quindi un nome che contiene due volte il testo di ricerca è una sola riga con due evidenziazioni.
Una corrispondenza in un commento o in un memo ha una riga propria: un fumetto per il commento di una tabella o di una colonna, o un foglietto adesivo per un memo, poi un estratto del testo con la corrispondenza evidenziata. Un testo lungo viene troncato con … e le interruzioni di riga appaiono come spazi. Passare il puntatore sulla riga per vedere il testo completo.
Ogni altra riga appare come al di fuori di una ricerca: una colonna mostra il suo tipo di dati, un indice le sue colonne e un nome vuoto appare come unnamed.

Ogni riga che ha righe sotto di sé appare espansa quando inizia una ricerca. Una riga compressa manualmente, o da Collapse All, resta compressa finché una corrispondenza sotto di essa non diventa quella corrente, o finché non cambiano il testo di ricerca, Match Case, Match Whole Word, Use Regular Expression o un tipo di testo, o la ricerca non viene riaperta con il tasto o con una voce Toggle Explorer.
La riga della corrispondenza corrente è evidenziata e resa visibile con lo scorrimento. L’albero elenca tutte le corrispondenze, per quante siano.
Le corrispondenze si percorrono nell’ordine dell’albero: tabella per tabella, il nome della tabella, il suo commento, il nome e il commento di ciascuna delle sue colonne nell’ordine delle colonne e i nomi dei suoi indici; poi i nomi dei gruppi di tabelle; poi i memo.

I risultati seguono il documento mentre Esplora è visibile. Quando le modifiche si interrompono, qualsiasi cambiamento ai testi cercati avvia una nuova ricerca e la corrispondenza corrente resta tale se esiste ancora. Ciò comprende la modifica del testo di un nome, di un commento o di un memo, l’aggiunta o la rimozione di una tabella, una colonna, un indice, un memo o un gruppo di tabelle, lo spostamento di una colonna e i memo o i gruppi di tabelle nascosti o mostrati con Opzioni di visualizzazione, il che toglie le loro corrispondenze dall’albero o le riporta. Una modifica nell’area di disegno, un annullamento o una ripetizione, un’importazione e una modifica da parte di un collaboratore o di un agente di programmazione contano tutti. Non contano la selezione, lo spostamento di tabelle, memo o gruppi nell’area di disegno, lo scorrimento, lo zoom e il passaggio del puntatore.
Le modifiche apportate mentre Esplora è chiuso o non visibile vengono cercate non appena torna visibile.

Andare a una corrispondenza​

Enter nel campo Trova passa alla corrispondenza successiva e Shift + Enter a quella precedente. I pulsanti freccia su e giù dopo il contatore fanno lo stesso; i loro tooltip riportano Previous Match (Shift+Enter) e Next Match (Enter) e i pulsanti sono disabilitati mentre non c’è alcuna corrispondenza.
Arrivati a un’estremità, lo spostamento ricomincia dall’altra. Nessuna corrispondenza è corrente fino al primo spostamento, quindi il primo Enter va alla prima corrispondenza e il primo Shift + Enter all’ultima.

Un clic su una riga dei risultati, o Enter o Space quando la riga ha il focus, fa una di queste cose:

  • Una riga il cui nome contiene una corrispondenza va alla prima corrispondenza di quel nome.
  • Una riga che mostra un estratto di un commento o di un memo va a quella corrispondenza.
  • Qualsiasi altra riga, come una tabella il cui nome non corrisponde o la riga propria di un memo, va all’elemento che la riga rappresenta e lascia invariata la corrispondenza corrente — vedere Andare a una riga.
  • Una cartella si comprime o si espande.

Ogni volta che una corrispondenza diventa quella corrente, l’albero espande le eventuali righe compresse sopra di essa e vi porta la riga con il focus, così i tasti freccia nell’albero proseguono da lì.

Andare a una corrispondenza chiude il pannello Proprietà tabella, se è aperto, poi:

  • Per il nome o il commento di una tabella, o il nome o il commento di una colonna, seleziona solo la tabella, la porta in primo piano e sposta il focus sulla cella che contiene la corrispondenza. Una corrispondenza in un commento nascosto da un’opzione di visualizzazione delle tabelle sposta invece il focus sul nome accanto.
  • Per il nome di un indice, seleziona solo la tabella dell’indice e la porta in primo piano, con il focus sul nome della tabella, a meno che il focus non sia già in quella tabella. I nomi degli indici non sono disegnati nell’area di disegno.
  • Per il nome di un gruppo di tabelle, seleziona solo il gruppo e lo porta in primo piano con le sue tabelle.
  • Per un memo, seleziona solo il memo e lo porta in primo piano.

L’area di disegno scorre solo quando la destinazione non è già ben visibile e lo zoom non cambia mai — vedere Dove porta un salto.

Dopo Enter nel campo Trova il punto di inserimento resta lì, e dopo la scelta di una riga il focus resta nell’albero, quindi ciò che si digita dopo non raggiunge la tabella selezionata.
Andare a una corrispondenza non avvia né completa mai una relazione in corso di disegno.

Sostituzione​

La riga Replace è inizialmente compressa. La freccia prima del campo Trova, il cui tooltip riporta Toggle Replace, la espande e la comprime. Comprimendola, il testo di sostituzione viene mantenuto.
La riga contiene il campo Replace, con l’interruttore Preserve Case all’interno, alla sua estremità, e due pulsanti, i cui tooltip riportano Replace (Enter) e Replace All. Entrambi i pulsanti sono disabilitati mentre non c’è alcuna corrispondenza.

Replace si esegue con Enter nel campo Sostituisci, con o senza Shift, o con il suo pulsante:

  • Senza una corrispondenza corrente, la prima pressione va solo alla corrispondenza successiva, così si vede cosa cambierebbe prima che cambi qualcosa.
  • Con una corrispondenza corrente, sostituisce quella sola occorrenza, lasciando le altre occorrenze nello stesso testo, e prosegue alla corrispondenza successiva dopo il testo che ha scritto. Ciò che ha scritto viene saltato anche quando contiene il testo di ricerca: sostituendo user con super_user, non ci si ferma poi all’interno di super_user.
  • Una corrispondenza che la sostituzione riscriverebbe esattamente com’era viene lasciata invariata e la pressione si limita a passare alla corrispondenza successiva.
  • La sostituzione e lo scorrimento alla corrispondenza successiva sono un solo passo di annullamento.

Una serie di pressioni di Replace si ferma quando torna al punto di partenza. Il contatore mostra No more matches, nessuna corrispondenza è corrente e le pressioni successive non sostituiscono nulla.
Customer sostituito con Big Customer viene quindi sostituito una sola volta, invece di diventare Big Big Customer.
Andare a una corrispondenza, cambiare il testo di ricerca, Match Case, Match Whole Word, Use Regular Expression o un tipo di testo, aprire la ricerca con il tasto o con una voce Toggle Explorer, o Replace All avvia una nuova serie, così come un annullamento o qualsiasi altra modifica che cambia il testo in cui la serie è iniziata. Cambiare il testo di sostituzione o Preserve Case non la avvia, e nemmeno il tasto quando si limita a riportare il punto di inserimento in un pannello Esplora già visibile.
Finché dura una serie, una tabella o un gruppo di tabelle che essa rinomina mantiene la propria posizione nell’albero e nell’ordine delle corrispondenze, quindi un elemento rinominato in modo da finire più avanti nell’ordinamento non viene incontrato di nuovo. La serie successiva riporta l’albero in ordine di nome e la riga rinominata si sposta nella nuova posizione.

Replace All si esegue con Ctrl + Enter (Windows/Linux) o ⌘ + Enter (Mac) nel campo Sostituisci, o con il suo pulsante:

  • Sostituisce tutte le corrispondenze nei tipi di testo attivi e lascia intatti gli altri tipi. Con i tipi predefiniti, rinomina tabelle, colonne, indici e gruppi di tabelle, mentre commenti e memo restano invariati.
  • Tutto ciò che modifica è un solo passo di annullamento — vedere Un gesto, un passo.
  • Il contatore mostra Replaced N matches, contando solo le occorrenze il cui testo è effettivamente cambiato. Quando nessuna è cambiata, mostra No changes e nella cronologia non viene registrato nulla, come quando si sostituisce l’espressione regolare (user) con $1.
  • I risultati vengono poi cercati di nuovo senza alcuna corrispondenza corrente, quindi possono elencare corrispondenze contenute nel nuovo testo.

Entrambi leggono ogni testo com’è al momento della pressione, non come lo ha trovato l’ultima ricerca.

Come viene usato il testo di sostituzione:

  • Senza Use Regular Expression, $ non ha alcun significato speciale e il testo di sostituzione viene usato così come è stato digitato, a parte le maiuscole e minuscole che gli applica Preserve Case.
  • Con Use Regular Expression, da $1 a $99, $<name>, $&, $`, $' e $$ vengono espansi come in String.prototype.replace di JavaScript.
  • Senza Preserve Case, le maiuscole e minuscole del testo corrispondente non vengono riportate: con Match Case disattivato, sostituire user con member trasforma Users in members.
  • Con Preserve Case, a ogni sostituzione vengono applicate le maiuscole e minuscole del testo che sostituisce, dopo l’espansione di $1 e degli altri, quindi la stessa sostituzione trasforma Users in Members:
    • Una corrispondenza tutta in maiuscolo riceve la sostituzione tutta in maiuscolo e una corrispondenza tutta in minuscolo la riceve tutta in minuscolo: USER con account dà ACCOUNT e user con Account dà account.
    • Qualsiasi altra corrispondenza dà al primo carattere della sostituzione la stessa forma, maiuscola o minuscola, del primo carattere della corrispondenza e lascia il resto come digitato: UserId con accountKey dà AccountKey e uSER con AccountKey dà accountKey. Quando il primo carattere della corrispondenza non distingue tra maiuscolo e minuscolo, la sostituzione resta come digitata: _Ab con xyz dà xyz.
    • Quando la corrispondenza e la sostituzione contengono entrambe -, o entrambe _, e quel separatore le divide nello stesso numero di parti, a ogni parte vengono applicate le maiuscole e minuscole della parte corrispondente: USER_id con account_key dà ACCOUNT_key e User-Name con account-key dà Account-Key. Quando sia - sia _ le dividono in questo modo, le maiuscole e minuscole vengono applicate all’insieme come a un’unica parte.
    • Una corrispondenza senza lettere che distinguono tra maiuscolo e minuscolo, come 123, lascia la sostituzione come digitata.
    • Una corrispondenza riscritta com’era non viene contata: con Match Case disattivato, sostituire customer con Customer riscrive customer, Customer e CUSTOMER com’erano e nessuna di esse viene contata.
  • Un campo Sostituisci vuoto elimina la corrispondenza.

Una sostituzione è una normale modifica, come digitare personalmente il nuovo nome della tabella, il commento, il nome della colonna o il testo del memo, rinominare l’indice in Proprietà tabella o rinominare il gruppo di tabelle.
Viene registrata nella cronologia e raggiunge i collaboratori e un agente di programmazione come qualsiasi altra modifica.

Tasti nei campi di ricerca​

  • Nel campo Trova, Enter passa alla corrispondenza successiva e Shift + Enter a quella precedente.
  • Nel campo Sostituisci, Enter sostituisce, con o senza Shift, e Ctrl + Enter (Windows/Linux) o ⌘ + Enter (Mac) sostituisce tutto.
  • Mentre un metodo di input sta componendo del testo in uno dei due campi, Enter appartiene alla composizione e non sposta né sostituisce.

L’effetto di Escape, dei tasti di scelta rapida dell’editor che continuano a funzionare e di ogni altro tasto in questi campi è descritto in Tasti nel pannello Esplora.

Editor di sola lettura​

In un editor readonly la ricerca si limita a trovare. Mancano la freccia Toggle Replace e la riga Replace, quindi anche il campo Sostituisci, Preserve Case, Replace e Replace All.
Il campo Trova, le sue tre opzioni, i tipi di testo, il contatore, i risultati e lo spostamento a una corrispondenza funzionano tutti. Il pannello Esplora che la contiene funziona come in qualsiasi altro editor — vedere Editor di sola lettura.

In VS Code, una revisione di un diagramma, come una revisione Git o una voce di Local History, si apre come testo JSON. Riaperta come diagramma con Reopen Editor With..., è di sola lettura e ha questa ricerca che si limita a trovare.

Modificare il tasto di scelta rapida​

Una pagina che incorpora l’editor può riassegnare Ctrl + F (Windows/Linux) o ⌘ + F (Mac), o rimuoverlo, con il nome findReplace tramite setKeyBindingMap.
Se viene rimosso, il tasto è lasciato alla pagina in ogni scheda. Il pulsante Explorer della barra degli strumenti apre e chiude ancora Esplora e la voce Toggle Explorer nella Ricerca rapida e nel menu contestuale dell’area di disegno apre ancora la ricerca o chiude Esplora, ma nessuno di essi mostra un tasto di scelta rapida, quindi il tooltip del pulsante riporta solo Explorer. Nemmeno la riga Toggle Explorer nella scheda Tasti di scelta rapida delle Impostazioni mostra un tasto. Con una nuova associazione, tutti mostrano il nuovo tasto.