💾 Archived View for it.omarpolo.com › articoli › pillole-di-emacs-001 captured on 2021-11-30 at 20:18:30. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

001 — Pillole di Emacs: mark ring

Mi piace parlare delle cose che scopro, ma spesso non ho una buona scusa per farlo. Quindi ecco una nuova serie di articoli per la domenica!

I post di questa serie saranno brevi, e parleranno solo di un qualcosa di piccolo, a sè stante, e digeribile da solo. Alcune cose saranno su pacchetti esterni magari, ma molto riguarderà ciò che è presente di default.

---

Una delle cose che avrei voluto scoprire prima su Emacs è il ‘mark ring’. Ogni volta che selezioniamo del testo, o che vengono invocati comandi che spostano il cursore (‘point’), la vecchia posizione viene salvata in un buffer circolare di posizioni[0].

‘C-SPC’ (oltre ad attivare il “transient mark mode” – la selezione) salva la posizione corrente del cursore, mentre ‘C-u C-SPC‘ ci fa saltare alla vecchia posizione. Multiple invocazioni di ‘C-u C-SPC’ fanno navigare sempre più indietro nello storico delle posizioni.

Utilizzo pratico? Si tratta di uno dei comandi che uso più spesso! Ad esempio, se sto modificando del codice a metà file e voglio aggiungere un ‘include’ (o verificare se è presente), faccio ‘M-<’ (‘beginning-of-buffer’), controllo/aggiungo “include” o simili, e poi torno *esattamente* dove mi trovavo prima con ‘C-u C-SPC‘.

Tra i vari comandi che salvano il mark ci sono ‘M-<’ (‘beginning-of-buffer’), ‘M->’ (‘end-of-buffer’), ‘C-s’/‘C-r’ (‘isearch-forward’/‘backward’) e altri. In genere si tratta di comandi che possono spostare il cursore potenzialmente di molto, infatti comandi come ‘next-line’ o ‘scroll-down-command’ non toccano il mark.

Per salvare la posizione corrente senza attivare la selezione si può invocare ‘set-mark-command’ due volte: ‘C-SPC C-SPC’.

---

[0]: per gli amici che usano evil/vim, ‘C-u C-SPC’ è simile al comando di vim (ma non di vi) ‘:gi’ che fa tornare il cursore all’ultimo punto dove si era in “insert mode”.

$BlogIt: index.gmi,v 1.1 2021/10/20 07:42:30 op Exp $