Passa al contenuto principale

Essere efficienti con VS Code

VS Code è l'editor disponibile in sede d'esame e mostrato a lezione. Come ogni strumento di lavoro, è una buona idea imparare ad usarlo bene per essere più rapidi ed efficaci. Questo si traduce, in genere, nel prendere l'abitudine di usare meno il mouse e più la tastiera, usando le dovute scorciatoie e combinazioni di tasti.

In questa documentazione ci focalizziamo sulle combinazioni per Windows, che sono quelle che troverete all'esame. Evidenzierò con una ⭐ le combinazioni più importanti e probabilmente meno note.

Salvare i file

Fra le cause dei vari errori per cui riceviamo richieste d'aiuto, una delle più frequenti è che i file modificati non sono stati salvati. Un file modificato ma non salvato è indicato da un pallino nero nella tab in alto, e le modifiche non saranno visibili a altri programmi come gcc e iverilog.

Si consiglia di salvare spesso e abitualmente, usando ctrl + s.

Le basi elementari

Quando si scrive in un editor, il testo finisce dove sta il cursore (in inglese caret). È la barra verticale che indica dove stiamo scrivendo. Si può spostare usando le frecce, non solo destra e sinistra ma anche su e giù. Usando font monospace, infatti, il testo è una matrice di celle delle stesse dimensioni, ed è facile prevedere dove andrà il caret anche mentre ci si sposta tra le righe.

Vediamo quindi le combinazioni più comuni.

TastiCosa fa
Tenere premuto shiftSeleziona il testo seguendo il movimento del cursore.
ctrl + cCopia il testo selezionato.
ctrl + vIncolla il testo selezionato.
ctrl + xTaglia (cioè copia e cancella) il testo selezionato.
ctrl + fCerca all'interno del file.
ctrl + hCerca e sostituisce all'interno del file.
ctrl + sSalva il file corrente.
ctrl + shift + pApre la Command Palette di VS Code.

Le basi un po' meno elementari

Si può spostare il cursore in modo ben più rapido che un carattere alla volta.

TastiCosa fa
ctrl + freccia sx o dxSposta il cursore di un token (in genere una parola, ma dipende dal contesto).
home (inizio in italiano, più spesso ↖ )Sposta il cursore all'inizio della riga.
end (fine in italiano)Sposta il cursore alla fine della riga.
ctrl + shift + fCerca all'interno della cartella/progetto/...
ctrl + shift + hCerca e sostituisce all'interno della cartella/progetto/...
alt + freccia su/giùSposta la riga corrente (o le righe selezionate) verso l'alto/basso.
crtl + alt + freccia su/giùCopia la riga corrente (o le righe selezionate) verso l'alto/basso.

Editing multi-caret

Normalmente c'è un cursore, e ogni modifica fatta viene applicata dov'è quel singolo cursore.

note

Negli esempi che seguono, userò | per indicare un cursore, e coppie di _ come delimitatori del testo selezionato.

    Contenu|to dell'editor

Premendo A

    ContenuA|to dell'editor

L'idea del multi-caret è di avere più di un cursore, per modificare più punti del testo allo stesso tempo. Questo è utile se abbiamo più punti del testo con uno stesso pattern.

TastiCosa fa
ctrl + dAggiunge un cursore alla fine della prossima occorrenza del testo selezionato.
escRitorno alla modalità con singolo cursore.

Vediamo un esempio.

    Prima |riga dell'editor
Seconda riga dell'editor
Terza riga dell'editor

Si comincia selezionando del testo.

    Prima _riga_| dell'editor
Seconda riga dell'editor
Terza riga dell'editor

Usiamo ora ctrl + d per mettere un nuovo caret dopo la prossima occorrenza di "riga".

    Prima _riga_| dell'editor
Seconda _riga_| dell'editor
Terza riga dell'editor

Àbbiamo ora due caret e se facciamo una modifica verrà fatta in tutti e due i punti. Premendo per esempio e, andremo a sovrascrivere la parola "riga" in entrambi i punti.

    Prima e| dell'editor
Seconda e| dell'editor
Terza riga dell'editor

Entrambi i cursori seguiranno indipendentemente anche gli altri comandi: movimento per caratteri, movimento per token, selezione, copia e incolla.

Per sfruttare questo, conviene scrivere codice secondo pattern in modo da facilitare questo tipo di modifiche. Per esempio, è utile avere cose che vorremmo poi modificare contemporaneamente su righe diverse, in modo da sfruttare home e end in modalità multi-cursore.

Vedremo in particolare come la sintesi di reti sincronizzate diventa molto più semplice se si sfrutta appieno l'editor.