Rieccoci nella nostra rubrica dedicata ai tool da shell. Oggi vogliamo parlarvi di un progetto open source chiamato AMP, si tratta di un text editor da usare nel terminale completamente realizzato in Rust. Gli sviluppatori di AMP si sono ispirati ad altri text editor come Vi / Vim ed AMP prende infatti il modello di interazione core di Vim e lo semplifica, raggruppando al suo interno tutte le funzionalità essenziali richieste in ogni moderno editor di testo.
AMP è dotato di una UI Text-based, dunque interamente pensata per essere eseguita tramite una shell sia in locale che da remoto. Gli sviluppatori hanno mutuato da Vim un'esperienza utente interamente keyboard-driven dunque basterà apprendere le shortcut base per spostarsi con agilità nell'interfaccia.
Sotto il cofano AMP è animato da Scribe, il team ha infatti preferito sviluppare tutte le feature principali separatamente rispetto ad AMP, cosi da renderle implementabili anche da altri progetti. Scribe fornisce quindi i vari set di strumenti per la gestione di documenti di testo, nel dettaglio:
- GapBuffer: che si occupa di ottimizzare la Data structure.
- Buffer: il wrapper che fornisce la file persistence, il supporto all'annullamento/ripristino delle operazioni e la ricerca del testo.
- Workspace: una collazione di buffer.
Installare AMP è molto semplice, infatti è presente un comodo pacchetto precompilato tramite il gestore cargo dedicato ai programmi in Rust. Se avete già installato le librerie di Rust nel vostro sistema cargo è già presente e pronto all'uso:
cargo install amp
AMP dispone di numerose feature che semplificano la gestione dei file e del codice, come ad esempio: un syntax highlighter, il Symbol Jump, che permette di muoversi tra classi, strutture e metodi, ed il File Finder che si occupa di indicizzare e ricercare velocemente i file tramite algoritmi capaci anche di ignorare la git directory per rendere la ricerca più precisa.
E' possibile anche personalizzare completamente le keymap e creare nuove macro personalizzate tramite una configurazione YAML-based.
Via AMP