Vous êtes sur la page 1sur 10

SciTE : l'éditeur indispensable

Dans le monde des éditeurs de texte, le choix est plutôt difficile. Les utilisateurs de Microsoft Windows en
savent quelque chose, puisqu'avec un Bloc-notes aphatique et un WordPad pathétique, on a du mal à
imaginer que l'informatique a évoluée depuis les années 70... Heureusement il y a Scite, un éditeur de texte
libre (évidemment), portable (qui fonctionne sous Windows et sous Linux, entre autres) et incroyablement
performant tout en restant leger comme une plume ! Alors, vous qui cherchez depuis des années un
éditeur à tout faire, supportant à la fois le HTML, le CSS, mais aussi le PHP, le C ou encore le C++, ça
vous dirait d'entrer dans le XXIe siècle ?

Présentation
SciTE signifie Scintilla Text Editor . Scintilla est un composant d'édition de code source aux fonctionnalités
impressionantes, utilisé dans de nombreux projets, comme Anjuta ou Notepad2. Ok, super, nous voila bien
avancé ! Mais qu'est-ce qu'il permet de faire au juste ?

Comme tous les éditeurs de texte, SciTE permet d'éditer n'importe quel fichier texte (code source, fichier de
configuration ou simple fichier texte), dans n'importe quel encodage (il gère parfaitement l'UTF-8). Il offre
de nombreuses fonctionnalités en terme d'édition pure (recherche et remplace à base de regexp, selection
en colonnes, ...) et se débrouille à merveille comme éditeur de code (coloration syntaxique, intégration des
API des langages permettant l'autocomplétion des fonctions, possibilité de « replier » du code, possibilité
de compiler directement depuis l'éditeur, ...). En plus, il dispose d'onglets (tabs) et connait un nombre
impressionnant de langages. Bref, le couteau suisse idéal pour tout programmeur ! Ca vous tente ? Alors
passons à l'installation...

Installation
Les utilisateurs de Linux devraient trouver SciTE packagé dans leur distribution. Les utilisateurs de Windows
pourront trouver sur la page de download plusieurs versions :

Les Windows Executable ne demandent pas d'installation, mais n'offrent pas toutes les fonctionnalités.
A utiliser lorsqu'on n'est pas sur son ordinateur (surtout le single file executable vraiment pratique).
Les Windows Installers s'intègrent parfaitement à Windows (vous pourrez donc faire clic droit sur un
fichier, puis « Editer dans SciTE »). Je vous conseille l'installeur de Bruce Dodson, light et très
complet.
Utilisation
SciTE fonctionne comme n'importe quel éditeur de texte (ou presque). Il peut ouvrir plusieurs fichiers
simultanément grâce à la gestion des onglets ( tabs).

Les raccourcis claviers standards

Ce sont pratiquement tous les mêmes que dans la plupart des autres logiciels, aussi bien sous Windows
que sous Linux.

Combo Action
Ctrl + O Ouvre un fichier.
Ctrl + W Ferme le fichier en cours.
Ctrl + N Nouveau fichier (nouvel onglet).
Ctrl + S Enregistrer le fichier.
Ctrl + Shift + S Enregistrer le fichier sous un autre nom.
Ctrl + Tab Passer à l'onglet de droite.
Ctrl + Shift + Tab Passer à l'onglet à gauche.
Ctrl + F Rechercher ( find ).
F3 Trouver le résultat suivant (après avoir commencé une recherche).
Shift + F3 Trouver le résultat précédent (après avoir commencé une recherche).
Ctrl + H Rechercher & Remplacer.
Ctrl + G Aller à la ligne... ( goto)
Ctrl + C Copier.
Ctrl + X Couper.
Ctrl + V Coller.
Ctrl + Z Annuler.
Ctrl + Y Refaire (après une annulation ratée).
Ctrl + A Sélectionner tout le contenu du fichier.
Ctrl + P Imprimer.

Les raccourcis claviers d'édition

Combo Action
Ctrl + Shift + A Afficher les espaces et les tabs.
Ctrl + Shift + D Afficher les caractères End of Line (fin de ligne).
Ctrl + U Transforme la sélection en minuscules.
Ctrl + Shift + U Transforme la sélection en majuscules.
Ctrl + L Coupe la ligne en cours
Ctrl + Shift + T Copie la ligne en cours
Ctrl + Shift + L Supprime la ligne en cours
Ctrl + D Duplique la ligne en cours.
Ctrl + T Inverse la ligne en cours avec celle au dessus ( transpose ).
Se déplacer d'un mot entier vers la gauche ou vers la droite
Ctrl + <- ou ->
(attention, parfois il se trompe avec les accents).
Shift + une flèche directionnelle,
Se déplacer en sélectionnant.
PageUp, PageDown , Home ou End
Ctrl + Shift + <- ou -> Sélectionner un mot entier vers la gauche ou vers la droite.
Ctrl + Backspace Supprime du début du mot jusqu'au curseur
Ctrl + Suppr Supprime du curseur jusqu'à la fin du mot
Ctrl + Shift + Backspace Supprime du début de la ligne jusqu'au curseur
Ctrl + Shift + Suppr Supprime du curseur jusqu'à la fin de la ligne

Les raccourcis claviers spéciaux pour les codeurs


Combo Action
Tab Indente le bloc sélectionné
Shift + Tab Dé-indente le bloc sélectionné
Ctrl + E Déplace le curseur jusqu'à la parenthèse/accolade ouvrante ou fermante.
Ctrl + Shift + E Sélectionne tout ce qui est contenu entre 2 parenthèses/accolades.
Commente/Décommente la/les ligne(s) en cours en mode Block , selon le langage.
Exemple en C++ :
Ctrl + Q
//~ string truc("PONG :" + c.getWhat());
//~ s.send(truc);
Commente les lignes selectionnées en mode Box . Exemple en C++ :
Ctrl + Shift + B /* string truc("PONG :" + c.getWhat());
* s.send(truc);
*/
Commente les lignes selectionnées en mode Stream . Exemple en C++ :
Ctrl + Shift + Q
/* string truc("PONG :" + c.getWhat());
s.send(truc); */
Propose des choix d'autocomplétion pour le mot en cours (à condition que l'API du
langage soit installée, voir comment faire). Exemple, taper str puis Ctrl + i en C
donnera :

Ctrl + I

Réaffiche la Calltip de la fonction en cours (à condition que l'API du langage soit


installée, voir comment faire) :

Ctrl + Shift + Espace

F7 Lance la compilation du fichier dans l' output pane (voir ci-dessous)


Ctrl + F7 Lance la construction du projet auquel appartient le fichier (voir ci-dessous)
F5
Lance le binaire compilé ou le logiciel permettant de visualiser le fichier (navigateur
web en cas de fichier HTML par exemple)

Voici les raccourcis clavier dont je me sert régulièrement. Mais il existe des tas d'autres, et si vous ne
trouvez pas votre bonheur ici, essayer de regarder dans la doc, rubrique Keyboard commands .

Enfin, pour les gens vraiment très exigeants, sachez qu'il est possible de définir ses propres raccourcis
clavier, via la propriété user.shortcuts (voir ci-après pour la configuration de SciTE). N'en ayant jamais eu
besoin, je ne peux malheureusement pas en dire plus là dessous. Je vous conseille donc d'aller lire la doc
de SciTE si cette fonctionnalité vous interresse.
Configuration
SciTE a un défaut : il n'offre pas d'interface pour paramétrer les options. Tout se fait via l'édition des
fichiers de configuration. Même si la syntaxe n'est pas difficile, c'est un peu contraignant, voire parfois
rebutant pour certains. Mais ne vous inquiétez, voici une rapide présentation du fonctionnement de l'engin,
et vous allez voir, c'est très simple !

Il y a 3 niveaux de fichiers : Global, User et Local. Local est prioritaire sur User qui est prioritaire sur Global.
Par exemple, si une option est présente à la fois dans Global et dans User, c'est la valeur de User qui sera
retenue.

Les fichiers sont accessibles via le menu Options, puis Open Global Options File ou Open User Options File
(ou encore Open Local Options File ).

Le fichier Global définit les options globales par défaut de SciTE (c'est à dire, celles qui s'appliqueront
à tous les utilisateurs). Sous Linux, le Global est en général quelque part dans /usr/share/scite/ et
n'est pas accessible par l'utilisateur (seulement le root). Il vaut mieux laisser ce fichier intact, d'abord
parcequ'il vous permettra de retrouver facilement les options par défaut en cas de soucis, mais
surtout parcequ'il sera écrasé à chaque mise à jour de SciTE, et donc il faudra refaire toutes les
modifs...
Le fichier User est donc celui qu'il vous faut pour définir toutes les options que vous voulez. Sous Linx,
il est dans ~/.SciTEUser.properties alors que sous Windows il se balade quelque part dans le profil.
Il est vide par défaut, alors on peut soit le remplir au fur et à mesure, soit recopier le fichier global
dedans et le modifier après ; c'est une question de goût.
Le fichier Local sert à définir des paramètres particuliers pour un dossier. Il doit se trouver dans le
même dossier que les fichiers auxquels on veut appliquer ces paramètres (par exemple : mode
d'indentation, wrap des lignes, options du compilateur, etc.).

Pour connaitre tous les détails des fichiers de configuration de SciTE, vous pouvez lire la doc, rubrique
Properties files.

Dans la suite de cet article, toutes les options seront à rajouter au User Options File .

L' output pane , ou comment transformer SciTE en IDE


Vous avez peut-être remarqué une petite fenêtre, sur la gauche ou en bas de la fenêtre d'édition ? C'est
l'output pane, là où sont affichés les résultats de la compilation du fichier ou du projet...

Et oui, car SciTE peut executer la compilation du fichier ( compile ) ou de tout le projet ( build), et lancer le
résultat obtenu ( go). Pour cela, il faut le configurer grâce aux propriétés command.go , command.build et
command.compile .

Voici par exemple ma configuration personnalisée pour les fichiers C/C++ (sous Linux) :
command.compile.*.c=gcc -Wall $(FileNameExt) -o $(FileName)
command.compile.*.cpp=g++ -Wall $(FileNameExt) -o $(FileName)
command.build.*.c=make
command.build.*.cpp=make
command.go.*.c=$(FileName)
command.go.*.cpp=$(FileName)
command.go.needs.*.c=gcc -Wall $(FileNameExt) -o $(FileName)

Lorsque des erreurs s'affichent dans l' output pane, un double clic sur la ligne vous amenera directement à
la ligne concernée, comme sur le screenshot ci-dessous :
Ce système est très très (très) largement configurable, notamment via l'utilisation des fichiers de
configuration Local Options File , qui permettent de définir des paramètres de compilation différents selon le
dossier. Je conseille à ceux qui sont interressés par ces fonctionnalités d'aller lire la doc de SciTE, rubrique
Standard Editing et Defined variables in properties files.

Trucs, astuces et options utiles


SciTE regorge d'options utiles, mais souvent (trop) bien cachées. Pour vous donner une idée, j'utilise SciTE
depuis 3 ans bientôt, et j'en découvre encore regulièrement ! Voici un condensé des options que j'utilise.

Sélection en colonnes

Sélectionner du texte en appuyant sur Ctrl sous Linux ou Alt sous Windows.

Pour ceux qui ne connaissent pas, la sélection en colonnes ça permet de faire selectionner du texte comme
ça :

Tabs

La barre des onglets ( tabbar) n'est pas toujours activée par défaut, ou alors le nombre de fichiers que l'on
peut ouvrir en même temps ( buffers ) est limité à 1. Voici les propriétés utiles :
tabbar.visible=1
tabbar.hide.one=0
tabbar.multiline=1
buffers=100

Pour afficher le numéro du fichier dans la barre de titre ( [2 of 4] par exemple), il faut utiliser la propriété :
title.show.buffers=1
Numéros de lignes

C'est pas toujours activé par défaut, alors il faut faire :


line.margin.visible=1
line.margin.width=4

Fonts

Sous Linux, elles sont très très moches par défaut. En plus, SciTE utilise des fonts qui ne sont pas
monospace (c'est à dire que chaque caractère n'utilise pas exactement le même nombre de pixel - cas de la
plupart des polices destinées à la rédaction de documents), ce qui est une très mauvaise idée pour le
codage. Personnellement, je remplace donc toutes les fonts par Fixed en taille 10 ou 12. Voici mes
paramètres :
if PLAT_GTK
font.base=font:fixed,size:12
font.small=font:fixed,size:10
font.comment=font:fixed,size:12
font.code.comment.box=$(font.comment)
font.code.comment.line=$(font.comment)
font.code.comment.doc=$(font.comment)
font.text=font:fixed,size:12
font.text.comment=font:fixed,size:12
font.embedded.base=font:fixed,size:12
font.embedded.comment=font:fixed,size:12
font.monospace=font:fixed,size:12
font.vbs=font:Lucida Sans Unicode,size:10

Fermer automatiquement les tags XML et (X)HTML

Par exemple, je tape <p> et ça donne <p></p> avec le curseur entre les deux balises.
xml.auto.close.tags=1

Remplacer dans tous les fichiers ouverts

D'après la documentation de SciTE, il faudrait ajouter cette propriété :


find.replace.advanced=1

Elle ferait apparaitre un bouton Replace in Buffers qui permettrait de remplacer dans tous les fichiers
ouverts. Malheureusement, je n'ai encore jamais réussi à faire apparaître ce bouton... Esperons que ce bug
sera rapidement corrigé !

Les boutons Home et End utilisent les lignes visuelles au lieu des lignes logiques

Lorsqu'on active l'option Wrap (via le menu Options ou via la propriété wrap=1), les lignes trop longues
s'arrettent au bord de l'écran et reviennent à la ligne, au lieu de continuer (et d'obliger l'utilisateur à défiler
horizontalement). La ligne trop longue en question est appellé ligne « logique » et forme alors plusieurs
lignes dites « virtuelles », car il n'y a pas physiquement de caractère de fin de ligne : c'est juste un effet
visuel. Un moyen de s'en rendre compte est de constater que ces lignes virtuelles ne sont pas numérotées,
comme le montre le screenshot ci-dessous :
Par défaut, les touches Home et End déplacent le curseur au début et à la fin de la ligne logique . Pour
changer se comportement afin qu'elles déplacent le curseur sur la ligne visuelle, c'est la propriété :
wrap.aware.home.end.keys=1

Configurer l'aspect du folding

Le folding permet de « replier » des morceaux de codes, par exemple le corps d'une fonction ou bien une
ligne d'un tableau HTML entre 2 balises <tr> .

Pour cela, il suffit de cliquer sur les icones qui apparaissent dans la marge spéciale (ou utiliser le raccourci
clavier Ctrl + * (du pavé numérique). Au cas où ça ne serait pas activé par défaut, il faut rajouter les
options :
fold=1
fold.compact=0
fold.flags=16
fold.symbols=1
fold.comment=1
fold.preprocessor=1
fold.html=1

Le paramètre fold.symbols permet de définir l'aspect des icones de folding. Voici les différents valeurs :

fold.symbols=0
fold.symbols=1

fold.symbols=2

fold.symbols=3 (mon préféré :)

Utiliser les icones Gnome pour la toolbar (parceque celles par défaut sont vraiment moches)

Uniquement sous Linux.


toolbar.usestockicons=1

Repère visuel à 80 caractères


edge.column=80
edge.mode=1
edge.colour=#C0DCC0

Note : Un bug sur ma version (1.66) fait que la ligne est tracée par dessus le texte. C'est assez
désagréable.

Intégration des API

Les fichiers API peuvent être téléchargé sur le site officiel, ou créé par des scripts, mais là il faut aller lire la
doc parceque j'ai jamais essayé. Ils permettent l'autocomplétion des fonctions, ainsi que l'affichage des
calltips indiquant les paramètres et la description des fonctions.

Dans les propriétés, il faut indiquer le chemin des fichiers. Exemple :


api.*.c=/usr/share/scite/c.api
api.*.cpp=/usr/share/scite/c.api
api.*.php=/usr/share/scite/php.api

Indentation

Comme je l'expliquais dans l'article sur les coding style, il est préferable d'utiliser des tabulations pour
l'indentation, et d'en choisir la taille. Avec SciTE, ça se configure comme ça (exemple avec des tabs qui font
8 caractères) :
tabsize=8
indent.size=8
use.tabs=1

Ouvrir les fichiers HTML dans Firefox

Par défaut, lorsqu'on fait Go (touche F5) sur un fichier HTML, SciTE ouvre Internet Explorer, ou Netscape
sous Linux. Pour ouvrir le fichier dans une nouvelle tab d'un Firefox déjà lancé, il suffit d'ajouter :
command.go.*.html=firefox -remote "openurl(file://$(FilePath),new-tab)"

Utiliser SciTE pour l'UTF-8

SciTE est capable de détecter l'encodage du fichier en se basant sur les commentaires en début de fichier.
Par exemple, un fichier XML débutant par :
<?xml version='1.0' encoding='utf-8'?>

ou n'importe quel fichier source débutant par :


# -*- coding: utf-8 -*-

sera reconnu.
Si pour une raison ou pour une autre ce n'est pas le cas, vous pouvez changer l'encodage du fichier en
cours via le menu File , Encoding .

UTF-8 encodera le fichier avec un caractère spécial au début, invisible tant qu'on reste avec SciTE,
mais qui risque de géner si le fichier est déstiné à être utilisé avec d'autres éditeurs qui ne le gère
pas.
UTF-8 Cookie encodera le fichier sans ce caractère spécial, mais en contrepartie, il n'y aura aucun
moyen de détecter qu'il est en UTF-8. Il faudra préciser à chaque ouverture que ce fichier est en UTF-
8