Ouvrir, colorer et formater
Les fichiers texte/code s'ouvrent dans l'éditeur (Scintilla) avec coloration syntaxique. Il y a commenter/décommenter (Ctrl+/), déplacer et dupliquer une ligne, des signets (Ctrl+F2), une liste de symboles/fonctions, l'autocomplétion par les mots, des guides d'indentation, le retour à la ligne, le zoom et la détection des changements du fichier sur le disque. Avec le suivi de version activé, la marge signale les lignes ajoutées/modifiées depuis la dernière version.
Il y a aussi des macros (enregistrer/rejouer une séquence de modifications avec Ctrl+Shift+R / F4, dans Outils → Exécuter → Macros), formater/beautify (Shift+Alt+F), une table ASCII dans la barre d'outils de l'onglet (pour insérer des caractères/traits de cadre) et un correcteur orthographique (Hunspell). Le pt-BR et l'en-US sont intégrés ; les autres langues se téléchargent à la demande depuis le tableau de Paramètres → Notes et écriture → Orthographe (une ligne par langue, avec un bouton Télécharger/Supprimer). Pour suivre un fichier journal en cours d'écriture, utilisez le bouton Surveiller (tail -f) dans la barre d'outils de l'onglet. Les très gros fichiers (au-delà d'environ 1 Mo) s'ouvrent dans un éditeur léger virtualisé qui ne charge que les portions visibles ; vous pouvez le forcer via Ouvrir → Ouvrir dans l'éditeur léger... Si la mémoire manque pour indexer toutes les lignes, le bandeau de l'éditeur prévient et seules les premières restent disponibles.
Formater et vérifier (linters) : Shift+Alt+F formate le document.
JSON, XML et SQL sont formatés par LightNote lui-même, sans rien installer —
et seuls les espaces changent : l'ordre des clés, les nombres et les textes restent
tels que vous les avez écrits. C'est le type affiché dans la barre d'état qui
compte, pas seulement l'extension : dans un onglet de brouillon, collez le
JSON, choisissez JSON comme type et formatez (un texte qui commence par
{, [ ou < est reconnu même sans choix).
En cas d'erreur, le texte ne change pas : l'endroit est souligné en rouge, le
curseur s'y place et la barre d'état indique la ligne, la colonne et la raison
(virgule manquante, clé sans guillemets…). La flèche du bouton Formater propose
Compacter (le JSON ou le XML sur une seule ligne), et avec une sélection les
deux n'agissent que sur elle — pratique pour un JSON dans une ligne de journal.
Un texte contenant un document JSON complet par ligne (JSON Lines, aussi appelé NDJSON — courant dans les journaux et les exports) est reconnu et formaté ligne par ligne, sans devenir un document unique.
F7 vérifie : le JSON et le XML sont contrôlés dans le texte même, sans enregistrer ; pour les autres langages, il exécute le linter (ruff, eslint, shellcheck, luacheck…), qui marque les problèmes dans l'éditeur et dans le panneau Problèmes (volet inférieur, navigable). Les autres langages utilisent un formateur externe (black, prettier, clang-format, gofmt, rustfmt…) ; si le type n'en a pas encore, Formater, F7 et F5 ouvrent un assistant qui n'affiche que les outils de ce type, indique ceux qui sont déjà installés et installe celui choisi en un clic (ou accepte la commande d'un autre programme). Les listes complètes se trouvent dans Paramètres → Outils de code → Formateurs par langage et → Linters par langage, avec les options formater à l'enregistrement / vérifier à l'enregistrement. Exécutez le fichier dans le panneau de sortie avec F6 (capture le code de sortie et la durée, avec arrêt/redémarrage) ou juste un extrait avec F8.
Convertir d’un format à un autre : le sous-menu Convertir se trouve dans Édition, dans la flèche du bouton Formater, dans le menu de type de la barre d’état et dans le clic droit de l’éditeur — y compris dans une note. Il agit sur la sélection, ou sur tout le texte quand rien n’est sélectionné. En haut, il indique ce qu’il a reconnu (« Sélection : JSON », « Texte entier : CSV ») et présente d’abord les conversions adaptées à ce contenu ; les autres sont dans des groupes, grisées avec la raison quand elles ne s’appliquent pas. Il y a JSON ↔ YAML, JSON ↔ XML (les attributs deviennent @nom), JSON ↔ CSV et JSON → tableau Markdown (un objet imbriqué devient la colonne a.b), CSV ↔ tableau Markdown, CSV → INSERT SQL, JSON Lines (NDJSON) ↔ tableau JSON, HTML ↔ Markdown, paramètres d’URL ↔ JSON, Base64, encodage d’URL, entités HTML, chaîne JSON et horodatage Unix ↔ date ISO 8601. L’ordre des clés et les nombres restent tels que vous les avez écrits, et le CSV reconnaît le ; d’Excel. Convertir tout le texte change aussi le type de l’onglet (le CSV devenu tableau passe en Markdown), mais le fichier garde son extension — la barre d’état le signale. Dans un JSON, le sous-menu Noms des champs renomme seulement les clés en camelCase, PascalCase, snake_case ou kebab-case : les valeurs, les nombres et l’indentation restent tels quels, et rien ne change si deux champs du même objet auraient le même nom. Les styles de nom (camelCase, PascalCase, snake_case, kebab-case et CONSTANTE_CASE) sont dans Édition → Casse, sous MAJUSCULES, minuscules et Première Lettre Majuscule. Ils agissent sur la sélection ou, sans sélection, sur le nom sous le curseur — jamais sur tout le fichier — et ne changent que les noms : guillemets, deux-points et accolades restent à leur place. Une ligne qui n’est qu’une expression (« nom du client ») devient un seul nom (nomDuClient).
Un .md ouvert comme code redevient une note en un clic. La barre de l'éditeur affiche Ouvrir comme note quand le fichier ouvert est une note — l'inverse de Ouvrir en tant que → Code du menu de l'arborescence. L'onglet revient à la vue note, avec édition formatée, lecture, sommaire et propriétés. Le bouton n'apparaît que si le changement est possible : une note trop grande reste dans l'éditeur de code.
Multi-curseur, historique et définition
Autres fonctions d'édition : multicurseur par occurrence (Ctrl+D,
toutes avec Alt+F3), dupliquer la ligne (Ctrl+Shift+D), joindre les
lignes (Ctrl+Shift+J), étendre/réduire la sélection par portée
(Ctrl+Shift+Espace / Ctrl+Alt+Espace), sélection rectangulaire
(Alt+glisser), plier/déplier tout, extraits/snippets (Ctrl+J,
modifiables dans Paramètres → Éditeur), Aller au symbole dans le fichier
(# dans la palette) et dans le projet (Ctrl+T ou
##), historique de navigation (Alt+←/→), un fil d'Ariane
(breadcrumbs) en haut de l'éditeur, des règles de colonne, la coloration des
paires de parenthèses, la fermeture/entourage automatique des paires et le nettoyage
à l'enregistrement (rogner les espaces, saut de ligne final) — le tout dans
Paramètres → Éditeur.
Extraits avec Tab. Tapez le déclencheur et appuyez sur Tab : dans un fichier SQL, sf devient SELECT * FROM TABLE; avec TABLE déjà sélectionné — tapez le nom de la table et Tab passe au champ suivant (Shift+Tab revient, Échap sort). Sont fournis sf, sc, sw, sj, sg, ins, upd et del (les deux derniers déjà avec WHERE). Chaque extrait vaut pour un langage ou pour tous, et dans Paramètres → Éditeur vous créez les vôtres dans n’importe quel langage, avec des champs ${1:NOM}, des répétitions $1 et la fin du curseur $0 ; un clic droit sur une sélection propose Créer un extrait à partir de la sélection. Les extraits apparaissent aussi dans la liste de complétion. Liste ouverte, Tab lui appartient ; pour que Tab ne développe pas les extraits, désactivez Développer les extraits avec Tab — Ctrl+J fonctionne toujours.
Historique local et presse-papiers : à chaque enregistrement, LightNote conserve une version du fichier (Fichier → Historique local…, restaurable), indépendamment de Git. Ctrl+Alt+V ouvre l'historique du presse-papiers pour coller un élément copié précédemment. Ctrl+Shift+T rouvre le dernier onglet fermé ; les onglets peuvent être épinglés (menu contextuel), ce qui les protège de la libération en cas d'inactivité.
Aller à la définition : F12 ou Ctrl+clic sur un identifiant saute à l'endroit où il est défini dans l'espace de travail ; Shift+F12 localise ses utilisations.
Minimap et opérations de texte
Minimap. Une miniature du document entier occupe le bord droit de l’éditeur : elle montre la « forme » du code (les couleurs de la coloration syntaxique en réduction) et marque la zone visible. Cliquez ou faites glisser dessus pour aller n’importe où dans le fichier. Activez-la dans Affichage → Minimap ou dans Paramètres → Éditeur. Le bouton Minimap de la barre de l’onglet de code (à côté d’ASCII) l’active ou la désactive sans quitter l’éditeur. Une bande de repères longe le bord gauche de la miniature : en bleu les lignes marquées d’un signet (le même point que dans la marge) et en ambre les occurrences de la recherche rapide — vous voyez d’un coup d’œil comment elles se répartissent dans tout le fichier, y compris hors écran.
Opérations sur le texte. Le menu Édition — et le menu contextuel de l'éditeur — contiennent les sous-menus Lignes (déplacer, dupliquer, supprimer, trier, joindre, inverser, numéroter) et Nettoyage (rogner les espaces, supprimer les lignes vides/dupliquées, tabulations ↔ espaces). Avec une sélection, le menu contextuel propose aussi Enregistrer la sélection dans un nouveau fichier… : l'extrait est écrit dans un fichier à côté de l'actuel et ouvert dans un onglet (l'original n'est pas modifié).
Indentation, commentaires et parenthèses
Indentation du fichier. Dans la barre d’état, à côté de la fin de ligne, le bouton Espaces : 4 (ou Tab : 4) indique comment l’onglet indente. Un clic ouvre le menu : Indenter avec des espaces ou Indenter avec des tabulations, la Largeur de l'indentation (2, 3, 4 ou 8 colonnes), Convertir l'indentation en espaces et en tabulations (réécrit l’indentation des lignes existantes), Détecter à partir du contenu et Utiliser par défaut, qui enregistre le choix pour les nouveaux fichiers. Ce que vous choisissez là vaut pour cet onglet.
D’où vient l’indentation. À l’ouverture d’un fichier, LightNote cherche un .editorconfig dans son dossier et dans ceux du dessus (jusqu’à un fichier avec root = true) et applique indent_style, indent_size et tab_width ; trim_trailing_whitespace et insert_final_newline s’appliquent à l’enregistrement, et end_of_line et charset seulement à un nouveau fichier. Sans .editorconfig, il regarde les lignes du fichier lui-même et adopte l’indentation qu’il y trouve, si elle est nette ; sinon, la valeur par défaut reste. L’ordre est donc : .editorconfig, puis le fichier, puis la valeur par défaut de Paramètres → Éditeur, où se trouvent Indentation par défaut, Détecter l'indentation de chaque fichier à l'ouverture et Respecter le .editorconfig de l'espace de travail.
Indentation intelligente. Entrée après {, ( ou [ — et après : en fin de ligne, en Python seulement — ouvre la ligne suivante un niveau plus loin. Entre {}, Entrée ouvre le bloc sur trois lignes, avec le curseur sur celle du milieu, et un seul Ctrl+Z annule le tout. Un }, ) ou ] tapé sur une ligne vide revient à l’indentation de la ligne qui l’a ouvert. Pour qu’Entrée copie seulement l’indentation de la ligne du dessus, désactivez Indentation intelligente dans Paramètres → Éditeur.
Commentaires, parenthèses et complétion. Ctrl+/ commente avec la syntaxe du langage utilisé par l’onglet — y compris dans un brouillon sans fichier et quand vous changez la coloration syntaxique dans la barre d’état — et, là où le langage n’a que des commentaires de bloc (HTML, CSS), il utilise celui de bloc. Ctrl+Shift+\ amène le curseur sur la parenthèse, le crochet ou l’accolade qui correspond à celle où il se trouve, et Ctrl+Shift+Alt+\ sélectionne jusque-là ; les deux sont aussi dans le menu du clic droit. Après les mots du document, la liste de complétion propose les mots-clés du langage (def, return…), même ceux qui ne sont pas encore dans le fichier. Et Affichage → Numéros de ligne masque ou affiche la marge numérotée.
Onglets récents (Ctrl+Tab)
Ctrl+Tab revient à l’onglet que vous utilisiez avant, dans le même panneau — et non à l’onglet voisin. En maintenant Ctrl, chaque Tab descend dans la liste des onglets récents, qui apparaît au milieu du panneau ; relâcher Ctrl ouvre celui choisi, et Échap annule. Ctrl+Shift+Tab parcourt dans l’ordre inverse. Chaque panneau a sa propre liste, un onglet fermé en sort et, avec un seul onglet, rien n’apparaît.
Panneaux côte à côte et en grille
La grille. La zone d’édition se divise en panneaux, chacun avec ses onglets, rangés en lignes et en colonnes : une ligne contient un ou plusieurs panneaux côte à côte, et les lignes s’empilent. Le panneau en haut à gauche est le principal et ne disparaît jamais, et la dernière ligne est celle des terminaux. Un panneau ne naît que lorsque vous le demandez, et disparaît de lui-même quand son dernier onglet le quitte.
Diviser. Fenêtre → Diviser à droite ouvre une deuxième vue de l’onglet actif dans une nouvelle colonne, juste à droite du panneau où vous êtes ; Fenêtre → Disposition → Diviser en bas fait de même dans une nouvelle ligne, juste sous celle du panneau actif et au-dessus de celle des terminaux. Les deux vues modifient le même texte. Quand il n’y a plus de place pour un autre panneau, la vue va dans le panneau voisin. Fenêtre → Supprimer la division ferme le panneau à droite du principal. Le bouton Diviser de la barre d’outils propose les mêmes éléments.
Faire glisser un onglet. Pendant que vous faites glisser un onglet, chaque panneau affiche une bande le long de son bord droit et une autre le long de son bord inférieur : déposer sur celle de droite crée une colonne juste à droite de ce panneau, et sur celle du bas, une ligne juste en dessous. Les bandes au pied de la zone envoient l’onglet dans la ligne des terminaux. Une bande qui ne pourrait pas créer de panneau, faute de place, n’apparaît pas. Dans le menu de l’onglet (clic droit), Déplacer vers un nouveau panneau à droite fait de même sans glisser, et Déplacer vers le panneau suivant et Déplacer vers le panneau précédent l’envoient chez un voisin.
Dispositions toutes prêtes. Fenêtre → Disposition (aussi dans le bouton Diviser) range la grille d’un coup : 1 panneau, 2 colonnes, 3 colonnes ou Grille 2×2. Appliquer une disposition ne ferme jamais d’onglet : les onglets d’un panneau en trop rejoignent le voisin qui reste, et les terminaux ne changent pas. Égaliser les tailles donne aux colonnes de chaque ligne la même largeur et aux lignes la même hauteur. Une disposition qui ne tient pas sur cet écran apparaît désactivée, et son info-bulle dit pourquoi.
Panneau vide. Un panneau qu’une disposition crée vide affiche Faites glisser un onglet ici, ou cliquez ici et ouvrez un fichier : un clic le sélectionne, et le prochain fichier que vous ouvrez y va. Il ne disparaît pas de lui-même ; le bouton Fermer le panneau le retire.
Combien de panneaux tiennent. La limite vient de la taille de l’écran, pas d’un nombre : une nouvelle colonne ne naît que si chaque panneau de la ligne garde au moins environ 420 pixels de largeur, et une nouvelle ligne seulement si chaque ligne garde environ 240 de hauteur — mais deux colonnes et deux lignes tiennent toujours. Sur un portable, la grille reste à deux colonnes ; sur un écran ultra-large, quatre ou cinq tiennent.
Au clavier. Ctrl+Alt+PgDn et Ctrl+Alt+PgUp amènent le focus au panneau suivant et au précédent, ligne par ligne, en revenant au début ; les terminaux comptent aussi. Fenêtre → Disposition propose aussi Déplacer l’onglet vers le panneau suivant et Déplacer l’onglet vers le panneau précédent.
En rouvrant le dossier. La grille revient comme vous l’avez laissée : les lignes, les colonnes, les tailles et les onglets de chaque panneau (qui ne chargent leur fichier que quand vous les choisissez). Ouverte sur un écran plus petit, les colonnes qui ne tiennent pas sont regroupées dans la dernière qui a tenu — aucun onglet n’est perdu.
Tâches du projet
Le build, les tests et le lint du projet se lancent sans passer par le terminal, dans Outils → Tâches du projet. LightNote trouve tout seul les tâches du dossier ouvert : les scripts du package.json (avec npm, pnpm ou yarn, selon le fichier de verrouillage présent), les cibles du Makefile, les buildPresets du CMakePresets.json, cargo build/test/run/check dans un projet Rust, pytest dans un pyproject.toml qui le configure et les recettes du justfile.
Vos propres tâches. Les tâches écrites à la main vont dans un tasks.json au format de VS Code (version 2.0.0), lu dans .vscode/tasks.json et dans .lightnote/tasks.json : si vous avez déjà celui de VS Code, il n’y a rien à écrire. Sont pris en charge label, type (shell ou process), command, args, options.cwd et options.env, group avec isDefault, les blocs windows/linux/osx, les commentaires et les variables ${workspaceFolder}, ${file}, ${fileDirname} et ${fileBasenameNoExtension}. Un fichier en erreur apparaît dans le menu avec la raison et est ignoré ; jusqu’à 200 tâches sont lues.
Exécuter. Choisissez la tâche dans le menu, ou appuyez sur Ctrl+Shift+B pour exécuter la tâche par défaut : celle choisie dans Outils → Tâches du projet → Tâche par défaut (gardée par dossier) ; sans choix, celle que le tasks.json marque avec isDefault ; sans aucune, LightNote demande laquelle exécuter. La sortie va dans le panneau de sortie, avec le code de sortie et le bouton d’arrêt. Modifier les tâches du projet ouvre le .vscode/tasks.json, s’il existe, ou crée un .lightnote/tasks.json avec un exemple. Si le programme d’une tâche n’est pas installé, la barre d’état dit lequel et propose Programmes externes.
Serveurs de langage (LSP)
Sans configuration, aller à la définition, rechercher les usages, renommer et la complétion cherchent par le nom : c’est rapide, mais sans comprendre la portée. Un serveur de langage (LSP) est un programme à part, celui-là même qu’utilise VS Code, qui comprend vraiment le langage. Il est désactivé au départ : activez-le dans Paramètres → Outils de code, dans le groupe Serveurs de langage (LSP), ou dans Outils → Serveur de langage → Utiliser les serveurs de langage (LSP). Chaque type de fichier a le sien : pyright (Python), typescript-language-server (JavaScript et TypeScript), clangd (C et C++), gopls (Go), rust-analyzer (Rust), lua-language-server (Lua) et bash-language-server (shell).
Ce qui change. Avec le serveur actif, F12 va à la définition qu’il indique, Shift+F12 liste les vrais usages dans le panneau de recherche, et renommer ne change que le bon symbole : LightNote demande « Renommer dans N fichiers ? », modifie les onglets ouverts (un Ctrl+Z l’annule dans chacun) et écrit les fichiers fermés en gardant leur encodage. La complétion propose ce que suggère le serveur, les erreurs sont soulignées et listées dans le panneau Problèmes, l’infobulle sur un nom montre son type et sa documentation, et Shift+Alt+F met en forme par le serveur quand aucun outil de mise en forme n’est configuré pour le type. Si le serveur ne répond pas, tarde (la complétion attend 1,5 s) ou n’a pas de réponse, la recherche par nom s’applique, comme avant ; un linter configuré continue de s’appliquer à Ctrl+S.
L’indicateur et l’installation. Dans la barre d’état, un indicateur montre le serveur de l’onglet et son état (pyright · prêt, démarrage…, erreur, non installé) ; un clic dessus propose Redémarrer le serveur, Arrêter le serveur, Afficher le journal… et la configuration. Pour installer, utilisez Outils → Serveur de langage → Configurer pour .py… : le même assistant que pour les outils de mise en forme montre la commande et installe en un clic — ouvrir un onglet ne propose jamais d’installer quoi que ce soit. Le serveur démarre avec le premier onglet de son type et s’arrête 5 minutes après la fermeture du dernier ; 4 au plus tournent en même temps, un fichier de plus de 1 Mo ne lui est pas envoyé et chaque fichier affiche jusqu’à 500 erreurs.
Index
Édition
- Vue d'ensemble
- Premiers pas
- Espace de travail et fenêtres
- Panneau Activités : tâches et messages
- Éditeur de code
- Markdown et wikilinks
- Diagrammes (Mermaid)
- Mathématiques et chimie (LaTeX)
- Calendrier dans la note
- Numérotation et renvois
- Citations et références
- Norme du travail universitaire
- Graphe de connexions
- Tables (Parquet, CSV, JSON, Excel)
- Espace d'analyse : tableau croisé dynamique et plusieurs graphiques
- PDF et images
- Images : annoter une capture
- Pages HTML (.html)
- Imprimer
- Zip comme un dossier (.zip)
- Blocs (.lnb)
- Tâches (Kanban / Gantt)
- Table personnalisée (.lnd)
- Bases (requêtes enregistrées sur vos notes)
Outils
- Recherche dans les fichiers et éléments en attente
- Suivi de version (Git facile)
- Instantanés et sauvegarde
- Réviser les modifications (points de contrôle)
- Comparer des fichiers (diff)
- Exécuter du code (F5)
- Terminal et CLI d'IA
- Assistant IA sur la sélection (Ctrl+K / Ctrl+I)
- IA sur votre ordinateur
- Sessions IA
- Chat IA
- Tester des API HTTP (.lnh)
- Bases de données (.lnc)
- Connexion SSH (.lns)
- Sécurité : Phrase-Sécurité, PIN et Markdown sécurisé
- Notes quotidiennes, capture rapide et zone de notification
- Retrouver d'anciennes notes
- Vos notes sur votre téléphone
- Enregistrer l'audio (voix, réunion) avec transcription par IA
- Notes autocollantes
- Calendrier
- Palette de commandes
Automatisation (IA / scripts)
Référence