Tutoriel : votre premier programme MoonBit dans Turbo MoonBit
À la fin de ce tutoriel, vous aurez écrit, formaté, lancé et cassé un petit programme MoonBit sans quitter l'éditeur — et vu l'éditeur vous dire où était l'erreur.
Aucune connaissance préalable de Turbo MoonBit n'est nécessaire. Il vous faut Go 1.26 ou plus récent pour compiler l'éditeur, et la chaîne d'outils MoonBit pour compiler le programme.
Prérequis
Vérifiez Go :
go version
Vous devriez voir quelque chose comme :
go version go1.26.5 linux/arm64
Vérifiez la chaîne d'outils MoonBit :
moon version --all
Vous devriez voir trois lignes, chacune se terminant par un chemin :
moon 0.1.20260904 (94521db 2026-09-04) ~/.moon/bin/moon
moonc v0.10.12+1634b282e (2026-09-07) ~/.moon/bin/moonc
moonrun 0.1.20260904 (94521db 2026-09-04) ~/.moon/bin/moonrun
Si la commande est introuvable, installez d'abord la chaîne d'outils — une seule commande suffit.
Étape 1 — Installer l'éditeur
git clone https://rickub.com/turbo-editors/turbo-moonbit.git
cd turbo-moonbit
make install
L'installeur compile, installe, puis vérifie ce qu'il a installé. Les dernières lignes sont :
==> Checking the language server
✓ moon-lsp at ~/.moon/bin/moon-lsp
==> Ready
Nous avons maintenant une commande turbo-moonbit.
Étape 2 — Créer un projet
cd /tmp
moon new hello
cd hello
Created username/hello at hello
moon new écrit un moon.mod, un moon.pkg, un fichier de bibliothèque, quelques fichiers de test, et un cmd/main/main.mbt contenant un hello-world. C'est moon.mod que Turbo MoonBit cherche pour trouver la racine d'un projet, et c'est le dossier dans lequel moon-lsp sera lancé.
Étape 3 — Ouvrir le fichier
turbo-moonbit cmd/main/main.mbt
L'écran se remplit. En haut :
File Edit Search Run Code Options Window Snippets MoonBit Help
Dix menus, et le neuvième porte le nom du langage. En bas, à droite, vous devriez voir :
1:1 LSP: ready
LSP: ready signifie que moon-lsp a démarré dans ce dossier. Nous nous en servirons à l'étape 8.
Étape 4 — Écrire le programme
Sélectionnez tout avec Ctrl-A et appuyez sur Suppr, puis tapez ceci. Tapez-le exactement ; nous allons regarder les couleurs juste après.
///|
struct Greeting {
name : String
times : Int
}
///|
fn greet(g : Greeting) -> Unit {
for i in 0..<g.times {
println("Hello, \{g.name}! (\{i + 1})")
}
}
///|
fn main {
greet({ name: "MoonBit", times: 3 })
}
Appuyez sur F2 pour enregistrer. L'étoile à côté de main.mbt dans le titre de la fenêtre disparaît.
Étape 5 — Lire les couleurs
Regardez ce que vous venez de taper. Dans le thème par défaut turbo-classic :
| Quoi | Couleur |
|---|---|
struct, fn, for, in |
blanc vif, gras — mots-clés |
Greeting, String, Int, Unit |
cyan vif — types |
greet, là où il est déclaré comme là où il est appelé |
jaune vif, gras — fonctions |
println |
cyan vif, gras — un nom fourni par le langage |
name, times, g, i |
jaune vif — noms ordinaires |
"Hello, \{g.name}! (\{i + 1})" |
vert, en entier — une seule chaîne |
0, 1, 3 |
magenta — nombres |
///| |
gris — un commentaire |
Deux de ces lignes méritent un second regard.
Greeting est cyan et greet est jaune, et personne n'a dit à l'éditeur lequel des deux est un type. C'est la règle propre à MoonBit qui tranche : un nom commençant par une majuscule ne peut être qu'un type, un trait ou un constructeur.
La chaîne est verte du premier guillemet au dernier, interpolations comprises. Le \{g.name} qu'elle contient n'est pas coloré comme du code — et c'est délibéré.
Étape 6 — Donner ses outils au projet
Appuyez sur F10 pour ouvrir la barre de menus, puis sur → huit fois pour atteindre MoonBit — après Edit, Search, Run, Code, Options, Window et Snippets. Plus rapide : Alt-M.
Le menu contient deux entrées, et une seule est disponible :
┌───────────────────┐
│ Create tools file │
│ Open tools file │ ← grisée ; il n'y a pas encore de fichier à ouvrir
└───────────────────┘
Choisissez Create tools file.
Une seconde fenêtre s'ouvre sur le fichier qui vient d'être écrit, .turbo-moonbit/tools.toml. Lisez-le si vous voulez — il explique chacune de ses clés — puis fermez-le avec Ctrl-W.
Rouvrez le menu MoonBit. Il contient maintenant neuf commandes, et les deux entrées ont échangé leurs rôles : Create tools file est grisée, et c'est Open tools file qui est choisissable.
Étape 7 — Le formater, et le lancer
Appuyez sur Alt-M et choisissez Format.
Une boîte de dialogue s'ouvre, se remplit, et affiche — exit 0. Appuyez sur Échap.
Regardez la dernière ligne de votre fonction main. Elle a changé :
greet({ name: "MoonBit", times: 3, })
moon fmt a ajouté une virgule finale, et l'éditeur a rechargé le fichier dont on venait de lui dire qu'il avait changé sous ses pieds.
Maintenant Alt-M, puis Run. Une boîte demande une valeur avant de lancer la commande :
┌──────────────── Run ────────────────┐
│ package, e.g. cmd/main │
│ [ ] │
└─────────────────────────────────────┘
Tapez cmd/main et appuyez sur Entrée. Une fenêtre de terminal s'ouvre et le programme s'y exécute :
Hello, MoonBit! (1)
Hello, MoonBit! (2)
Hello, MoonBit! (3)
Un terminal plutôt qu'une boîte de dialogue, parce qu'un programme qui lit le clavier doit pouvoir recevoir une réponse. Le programme est terminé, la fenêtre a donc cessé de se comporter comme un terminal et toutes les touches reviennent à l'éditeur : appuyez sur Ctrl-W pour la fermer.
Étape 8 — Le casser, et voir où
Allez sur la ligne du println et remplacez g.name par g.nam. Appuyez sur F2 pour enregistrer.
En une seconde ou deux, deux choses se produisent. Un × rouge apparaît dans la gouttière, juste à gauche du numéro de cette ligne. Et la barre d'état affiche :
⚠ The value identifier nam is unbound.
Personne ne l'a demandé. moon-lsp le publie de lui-même chaque fois qu'il relit le fichier.
Remettez le e et enregistrez de nouveau ; la marque et le message disparaissent tous les deux.
Étape 9 — Changer de thème
F10, puis → cinq fois pour atteindre Options — après Edit, Search, Run et Code. Choisissez Theme….
Une liste s'ouvre sur le thème dans lequel vous êtes. Appuyez sur ↓ jusqu'à cobalt puis Entrée. Tout l'écran change, en gardant la même forme.
Appuyez sur Alt-X pour quitter. L'éditeur pose d'abord la question des fichiers non enregistrés, s'il y en a.
Et maintenant ?
Vous avez créé un projet MoonBit, écrit un programme dans l'éditeur, formaté, lancé, cassé, et vu l'éditeur dire où. Pour aller plus loin :
- Pour faire des choses précises → les guides pratiques
- Pour savoir exactement ce qui est coloré et comment → langages colorés
- Pour comprendre pourquoi l'éditeur est bâti ainsi → les explications
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 |
|