IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Cours complet pour débutants pour apprendre la programmation en R


précédentsommairesuivant

A. GNU Emacs et ESS : la base

Emacs est l'Éditeur de texte des éditeurs de texte. À l'origine un éditeur pour les programmeurs (avec des modes spéciaux pour une multitude de langages différents), Emacs est devenu au fil du temps un environnement logiciel en soi dans lequel on peut réaliser une foule de tâches différentes : rédiger des documents LaTeX, interagir avec R, SAS ou un logiciel de base de données, consulter son courrier électronique, gérer son calendrier ou même jouer à Tetris !

Cette annexe passe en revue les quelques commandes essentielles à connaître pour commencer à travailler avec GNU Emacs et le mode ESS. L'ouvrage de Cameron et collab. (2004) constitue une excellente référence pour l'apprentissage plus poussé de l'éditeur.

A-1. Mise en contexte

Emacs est le logiciel étendard du projet GNU (« GNU is not Unix »), dont le principal commanditaire est la Free Software Foundation (FSF) à l'origine de tout le mouvement du logiciel libre.

  • Richard M. Stallman, président de la FSF et grand apôtre du libre, a écrit la première version de Emacs et il continue à ce jour à contribuer au projet.
  • Les origines de Emacs remontent au début des années 1980, une époque où les interfaces graphiques n'existaient pas, le parc informatique était beaucoup plus hétérogène qu'aujourd'hui (les claviers n'étaient pas les mêmes d'une marque d'ordinateur à une autre) et les modes de communication entre les ordinateurs demeuraient rudimentaires.
  • L'âge vénérable de Emacs transparaît à plusieurs endroits, notamment dans la terminologie inhabituelle, les raccourcis clavier non conformes aux standards d'aujourd'hui ou la manipulation des fenêtres qui ne se fait pas avec une souris.
Image non disponible
Tiré de XKCD.com. La commande M-X butterfly existe vraiment dans Emacs… en référence à cette bande dessinée !

Emacs s'adapte à différentes tâches par l'entremise de modes qui modifient son comportement ou lui ajoutent des fonctionnalités. L'un de ces modes est ESS (Emacs Speaks Statistics).

  • ESS permet d'interagir avec des logiciels statistiques (en particulier R, S+ et SAS) directement depuis Emacs.
  • Quelques-uns des développeurs de ESS sont aussi des développeurs de R, d'où la grande compatibilité entre les deux logiciels.
  • Lorsque ESS est installé, le mode est activé automatiquement en ouvrant dans Emacs un fichier dont le nom se termine par l'extension .R.

A-2. Installation

GNU Emacs et le mode ESS sont normalement livrés d'office avec toutes les distributions Linux. Pour les environnements Windows et OS X, le plus simple consiste à installer les distributions préparées par le présent auteur. Consulter le site http://vgoulet.act.ulaval.ca/emacs/

A-3. Description sommaire

Au lancement, Emacs affiche un écran d'information contenant des liens vers différentes ressources. Cet écran disparaît dès que l'on appuie sur une touche. La fenêtre Emacs se divise en quatre zones principales (voir la figure A.1) :

Image non disponible
Fig. A.1 - Fenêtre GNU Emacs et ses différentes parties au lancement de l'application sous OS X. Sous Windows et Linux, la barre de menu se trouve à l'intérieur de la fenêtre.
  1. Tout au haut de la fenêtre (ou de l'écran sous OS X), on trouve l'habituelle barre de menu dont le contenu change selon le mode dans lequel se trouve Emacs ;
  2. L'essentiel de la fenêtre sert à afficher un buffer, soit le contenu d'un fichier ouvert ou l'invite de commande d'un programme externe ;
  3. La ligne de mode est le séparateur horizontal contenant diverses informations sur le fichier ouvert et l'état de Emacs ;
  4. Le minibuffer est la région au bas de la fenêtre où l'on entre des commandes et reçoit de l'information de Emacs.

Il est possible de séparer la fenêtre Emacs en sous-fenêtres pour afficher plusieurs buffers à la fois. Il y a alors une ligne de mode pour chaque buffer.

A-4. Emacs-ismes et Unix-ismes

Emacs possède sa propre terminologie qu'il vaut mieux connaître lorsque l'on consulte la documentation. De plus, l'éditeur utilise des conventions du monde Unix qui sont moins usitées sur les plateformes Windows et OS X.

  • Dans les définitions de raccourcis clavier :

    • C est la touche Contrôle (Image non disponible) ;
    • M est la touche Meta, qui correspond à la touche Alt de gauche sur un PC ou la touche Option (Image non disponible) sur un Mac (toutefois, voir l'encadré) ;
    • ESC est la touche Échap (Image non disponible) et est équivalente à Meta ;
    • SPC est la barre d'espacement ;
    • DEL est la touche Retour arrière (Image non disponible) — et non la toucheSupprimer ;
    • RET est la touche Entrée (Image non disponible).
  • Toutes les fonctionnalités de Emacs correspondent à une commande pouvant être tapée dans le minibuffer. M-x démarre l'invite de commande.
  • Le caractère ~ représente le dossier vers lequel pointe la variable d'environnement $HOME (Linux, OS X) ou %HOME% (Windows). C'est le dossier par défaut de Emacs.
  • La barre oblique (/) est utilisée pour séparer les dossiers dans les chemins d'accès aux fichiers, même sous Windows.
  • En général, il est possible d'appuyer sur TAB dans le minibuffer pour compléter les noms de fichiers ou de commandes.

Par défaut sous OS X, la touche Meta est assignée à Option (Image non disponible). Sur les claviers français, cela empêche d'accéder à certains caractères spéciaux tels que [, ], { ou }.

Une solution à cette fâcheuse situation consiste à assigner la touche Meta à Commande (Image non disponible). Cela bloque alors l'accès à certains raccourcis Mac, mais la situation est moins critique ainsi. Pour assigner la touche Meta à Commande (Image non disponible) et laisser la touche Option (Image non disponible) jouer son rôle usuel, il suffit d'insérer les lignes suivantes dans son fichier de configuration .emacs (voir la section A.7Configuration de l'éditeur) :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
;;; ====================================
;;; Assigner la touche Meta à Commande
;;; et laisser Option être Option
;;; ====================================
(setq-default ns-command-modifier 'meta)
(setq-default ns-option-modifier 'none)

A-5. Commandes de base

Emacs comporte une pléthore de commandes, il serait donc futile de tenter d'en faire une liste exhaustive ici. Nous nous contenterons de mentionner les commandes les plus importantes regroupées par tâche.

A-5-1. Les essentielles

Image non disponible démarrer l'invite de commande.

Image non disponible bouton de panique : annuler, quitter ! Presser plus d'une fois au besoin.

A-5-2. Manipulation de fichiers

Entre parenthèses, le nom de la commande Emacs correspondante. On peut entrer cette commande dans le minibuffer au lieu d'utiliser le raccourci clavier.

On remarquera qu'il n'existe pas de commande « nouveau fichier » dans Emacs. Pour créer un nouveau fichier, il suffit d'ouvrir un fichier n'existant pas.

Image non disponible ouvrir un fichier (find-file)

Image non disponible sauvegarder (save-buffer)

Image non disponible sauvegarder sous (write-file)

Image non disponible fermer un fichier (kill-buffer)

Image non disponible annuler (pratiquement illimité) ; aussi C-x u (undo)

Image non disponible recherche incrémentale avant (isearch-forward)

Image non disponible Recherche incrémentale arrière (isearch-backward)

Image non disponible rechercher et remplacer (query-replace)

A-5-3. Déplacements simples du curseur

Image non disponible déplacer d'un caractère vers l'arrière | l'avant (backward-char | forward-char)

Image non disponible aller au début | fin de la ligne (move-beginning-of-line | move-end-of-line)

Image non disponible aller à la ligne précédente | suivante (previous-line | next-line)

Image non disponible aller au début | fin du fichier (beginning-of-buffer | end-of-buffer)

Image non disponible effacer le caractère à gauche | droite du curseur (delete-backward-char | delete-char)

Image non disponible effacer le mot à gauche | droite du curseur (backward-kill-word | kill-word)

Image non disponible supprimer jusqu'à la fin de la ligne (kill-line)

Plusieurs des raccourcis clavier de Emacs composés avec la touche Contrôle (Image non disponible) sont valides sous OS X. Par exemple, Image non disponibleA et Image non disponibleE déplacent le curseur au début et à la fin de la ligne dans les champs texte.

A-5-4. Sélection de texte, copier, coller, couper

Image non disponible débute la sélection (set-mark-command)

Image non disponible couper la sélection (kill-region)

Image non disponible copier la sélection (kill-ring-save)

Image non disponible coller (yank)

Image non disponible remplacer le dernier texte collé par la sélection précédente (yank-pop)

  • Il est possible d'utiliser les raccourcis clavier usuels de Windows (C-c, C-x, C-v) et OS X (Image non disponibleC, Image non disponibleX, Image non disponibleV) en activant le mode CUA dans le menu Options.
  • On peut copier-coller directement avec la souris dans Windows en sélectionnant du texte puis en appuyant sur le bouton central (ou la molette) à l'endroit souhaité pour y copier le texte.

A-5-5. Manipulation de fenêtres

Image non disponible changer de buffer (switch-buffer)

Image non disponible séparer l'écran en deux fenêtres (split-window-vertically)

Image non disponible conserver uniquement la fenêtre courante (delete-other-windows)

Image non disponible fermer la fenêtre courante (delete-window)

Image non disponible aller vers une autre fenêtre lorsqu'il y en a plus d'une (other-window)

A-5-6. Manipulation de fihiers de script dans le mode ESS

Le mode ESS dispose de fonctions « intelligentes » qui facilitent grandement la manipulation des fichiers de script. Les deux principales commandes à connaître sont les suivantes :

Image non disponible évaluer dans le processus R la ligne sous le curseur ou la région sélectionnée, puis déplacer le curseur à la prochaine expression (ess-eval-region-or-line-and-step) ;

Image non disponible évaluer dans le processus R la région sélectionnée, la fonction ou le paragraphe (tout bloc entre deux lignes blanches) dans lequel se trouve le curseur, puis déplacer le curseur à la prochaine expression

(ess-eval-region-or-function-or-paragraph-and-step).

Les quelques autres fonctions utiles sont :

Image non disponible déplacer le curseur vers le processus R (ess-switch-to-inferior-or-script-buffer) ;

Image non disponible évaluer le code de la fonction courante dans le processus R (ess-eval-function) ;

Image non disponible évaluer le code du fichier courant en entier dans le processus R (ess-load-file) ;

Image non disponible aide sur une commande R (ess-display-help-on-object).

A-5-7. Interaction avec l'invite de commande R

Image non disponible commande précédente | suivante dans l'historique (previous-matching-history-from-input | next-matching-history-from-input).

Image non disponible déplacer le curseur vers le fichier de script courant (ess-switch-to-inferior-or-script-buffer).

Image non disponible sélectionner le résultat de la dernière commande (mark-paragraph).

Image non disponible effacer le résultat de la dernière commande (comint-delete-output).

Image non disponible aide sur une commande R (ess-display-help-on-object).

Image non disponible terminer le processus R (ess-quit).

A-5-8. Consultation des rubriques d'aide de R

Image non disponible aller à la section précédente | suivante de la rubrique (ess-skip-to-previous-section | ess-skip-to-next-section).

Image non disponible aller à la section de la liste des arguments (Arguments).

Image non disponible aller à la section des détails sur la fonction (Details).

Image non disponible aller à la section sur la valeur retournée par la fonction (Value).

Image non disponible aller à la section des fonctions apparentée (See Also).

Image non disponible aller à la section des exemples (Examples).

Image non disponible évaluer la ligne sous le curseur ; pratique pour exécuter les exemples (ess-eval-line-and-step).

Image non disponible évaluer la région sélectionnée (ess-eval-region).

Image non disponible ouvrir une nouvelle rubrique d'aide, par défaut pour le mot se trouvant sous le curseur (ess-display-help-on-object).

Image non disponible retourner au processus ESS en laissant la rubrique d'aide visible (ess-switch-to-end-of-ESS).

Image non disponible fermer la rubrique d'aide et retourner au processus ESS (ess-kill-buffer-and-go).

A-6. Anatomie d'une session de travail (bis)

On reprend ici les étapes d'une Image non disponiblesession de travail type présentées à la section 1.6Anatomie d'une session de travail, mais en expliquant comment compléter chacune dans Emacs avec le mode ESS.

  1. Lancer Emacs et ouvrir un fichier de script avec

    • C-x C-f

    ou avec le menu

    • File|Open File…

    En spécifiant un nom de fichier qui n'existe pas déjà, on se trouve à créer un nouveau fichier de script. S'assurer de terminer le nom du nouveau fichier par .R pour que Emacs reconnaisse automatiquement qu'il s'agit d'un fichier de script R.

  2. Démarrer un processus R à l'intérieur même de Emacs avec

    • M-x R Image non disponible

    Emacs demandera alors de spécifier le répertoire de travail (starting data directory). Accepter la valeur par défaut, par exemple

    • ~/ Image non disponible

    ou indiquer un autre dossier. Un éventuel message de Emacs à l'effet que le fichier .Rhistory n'a pas été trouvé est sans conséquence et peut être ignoré.

  3. Composer le code. Lors de cette étape, on se déplacera souvent du fichier de script à la ligne de commande afin d'essayer diverses expressions. On exécutera également des parties seulement du code se trouvant dans le fichier de script. Les commandes les plus utilisées sont alors :

    • C-RET pour exécuter une ligne du fichier de script ou la région sélectionnée ;
    • C-c C-c pour exécuter un paragraphe du fichier de script ;
    • C-c C-z pour se déplacer entre le fichier de script et la ligne de commande R.
  4. Sauvegarder le fichier de script :

    • C-x C-s

    Les quatrième et cinquième caractères de la ligne de mode changent de ** à --.

  5. Sauvegarder si désiré l'espace de travail de R avec save.image(). Cela n'est habituellement pas nécessaire à moins que l'espace de travail ne contienne des objets importants ou longs à recréer.

  6. Quitter le processus R avec

    • C-c C-q

    Cette commande ESS se chargera de fermer tous les fichiers associés au processus R. On peut ensuite quitter Emacs en fermant l'application de la manière usuelle.

A-7. Configuration de l'éditeur

Une des grandes forces de Emacs est qu'à peu près chacune de ses facettes est configurable : couleurs, polices de caractères, raccourcis clavier, etc.

  • La configuration de Emacs se fait par le biais de commandes réunies dans un Image non disponiblefichier de configuration nommé .emacs (le point est important !) que Emacs lit au démarrage.
  • Le fichier .emacs doit se trouver dans le dossier ~/, c'est-à-dire dans le dossier de départ de l'utilisateur sous Linux et OS X, et dans le dossier référencé par la variable d'environnement %HOME% sous Windows.

A-8. Aide et documentation

Emacs possède son propre système d'aide très exhaustif, mais dont la navigation est peu intuitive selon les standards d'aujourd'hui. Consulter le menu Help.

Autrement, on trouvera les manuels de Emacs et de ESS en divers formats dans les sites respectifs des deux projets :

Enfin, si le désespoir vous prend au cours d'une séance de codage intensive, vous pouvez toujours consulter le psychothérapeute Emacs. On le trouve, bien entendu, dans le menu Help !


précédentsommairesuivant

Licence Creative Commons
Le contenu de cet article est rédigé par Vincent Goulet et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé.
Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright © 2018 Developpez.com.