Evidenziazione di tag / blocco corrispondente¶
Quando il cursore si trova su — o dentro — un tag o un blocco che lo
racchiude, l'editor incornicia l'inizio e la fine di quella coppia, così vedi a
colpo d'occhio dove cominciano e finiscono un <div>…</div>, un if…fi o un
#if…#endif.
Questo è separato dalla corrispondenza di parentesi a carattere singolo (il glifo
() [] {}): quella continua a funzionare esattamente come prima, per conto suo.
Le due possono comparire insieme, quindi puoi essere dentro un blocco { } e un
if…fi che lo racchiude e vederle entrambe.
Come usarla¶
Metti il cursore sul nome di un tag (o in qualsiasi punto dentro <…>), oppure
su una parola chiave di blocco: l'apertura, la chiusura e ogni eventuale parola
chiave «intermedia» si illuminano insieme. Mettere il cursore dentro un blocco (non
su una parola chiave) evidenzia la coppia che lo racchiude più vicina. Il
contenuto comune tra i tag non evidenzia nulla.
Si aggiorna man mano che il cursore si muove e non richiede alcuna scorciatoia.
Attivarla e disattivarla¶
Visualizza ▸ Evidenzia tag/blocco corrispondente — attiva per impostazione predefinita, e la scelta viene ricordata tra le sessioni.
I due tipi di coppia¶
Tag (markup)¶
In HTML e XML, con il cursore su un tag di apertura o di chiusura viene incorniciato
il nome dell'elemento in entrambi i tag. L'annidamento di tag con lo stesso nome
si risolve per profondità, i tag autochiusi (<br/>) non hanno compagno, e un >
dentro il valore di un attributo tra virgolette non chiude mai il tag in anticipo. Un
< usato come testo o come operatore di confronto non la attiva mai: la
corrispondenza si basa sullo stile di tag dell'analizzatore lessicale, non sulle
parentesi angolari grezze.
Parole chiave di blocco (linguaggi)¶
Coppie di parole chiave intere, contate con annidamento corretto e ignorando tutto ciò che sta dentro commenti e stringhe. Di serie arrivano:
| Linguaggio | Coppie |
|---|---|
| Shell (bash) | if … fi (con elif/else), do … done, case … esac |
| C / C++ | preprocessore #if / #ifdef / #ifndef … #endif (con #elif/#else) |
| SQL | begin … end, case … end (senza distinguere maiuscole) |
C/C++ la usa solo per il preprocessore
I normali blocchi { } di C/C++ sono gestiti dalla corrispondenza di parentesi a
carattere singolo, non da questa funzionalità, quindi un .cpp senza
condizionali #if…#endif non mostra nulla qui, per scelta progettuale.
Aggiungere coppie per un altro linguaggio¶
Le coppie sono dati, non codice: vivono nel JSON del colorizzatore del
linguaggio, quindi puoi aggiungerle per qualsiasi linguaggio senza ricompilare. Nel
file del colorizzatore aggiungi "tagMatch": true per il markup, oppure un elenco
"blockPairs" per le coppie di parole chiave, ad esempio:
"blockPairs": [
{ "open": "if", "middle": ["elif", "else"], "close": "fi" },
{ "open": "do", "close": "done" }
],
"pairsCaseSensitive": false
Un file di colorizzatore dell'utente oscura quello di serie, quindi puoi sostituire o ampliare quelli integrati. Vedi Colorazione della sintassi per sapere dove vivono i file dei colorizzatori.
Note e limiti¶
- La corrispondenza esamina una finestra attorno al cursore, quindi una coppia le cui estremità sono molto lontane tra loro (dell'ordine di mille righe o più, ad esempio una guardia di inclusione di un intero file) potrebbe non essere trovata.
- La corrispondenza usa un annidamento rigoroso: un solo tag o blocco interno non chiuso impedisce ai tag o blocchi attorno a esso di corrispondere finché non viene chiuso.
Correlati¶
- Coppie automatiche e rientro — chiusura automatica di parentesi e virgolette mentre digiti (una funzionalità diversa).
- Colorazione della sintassi — i file dei colorizzatori che dichiarano anche queste coppie.