vi-muman micro manuel interactif pour les nouveaux utilisateurs de vi .............................................................................. Pour apprendre vi dès maintenant il est vivement conseillé d'ouvrir ce fichier avec vi (en minuscule) en tapant EXACTEMENT la commande : vi -Readonly vi-muman.it où : -Readonly (avec un R majuscule) est l'option de lecture seule qui t'empêchera de modifier ce fichier; vi-muman.it n'est que le nom de ce fichier. ................................................................................ ^^^^^^^^^^^^^^^ MEMORISE LE OU ECRIT LE QUELQUE PART ^^^^^^^^^^^^^^^ POUR SORTIR de vi presse les unes après les autres les touches [ESC] :q [ENTREE] Où la touche [ESC] est celle en haut à gauche sur le clavier et [ENTER] la touche ENTREE. Après avoir pressé les touches n'oublie pas d'enlever les doigts. Avant d'appuyer sur la touche [ENTREE] tu devrais voir :q Cette commande (quit) apparaîtra sur la dernière ligne. Si pour quelques motifs mystérieux des phénomènes inattendus se produisent, alors appuies sur les touches [ESC] :q [ENTREE]. Tu sortiras sans endommager ton fichier, et tu pourras l'ouvrir de nouveau. Et cette fois tache de ne pas frapper n'importe quelle touche du clavier. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Pour aller à la page suivante [CTRL] f (reste appuyé sur la touche [CTRL] et appuis sur f). Pour aller à la page précédente [CTRL] b (f pour forward et b pour backward) (on continue) Bien ! Exercices: a - retourne à la page précédente et revients ici b - sorts de ce manuel (tu te rappelles comment on fait ? Sinon remonte et apprends !) et ouvres de nouveau ce fichier avec vi, n'oublie pas l'option de lecture seule : si tu ne te rappelles pas comment faire retourne au début et mémorise le (c'est mieux de l'avoir dans sa tête que sur une feuille) c - refaits les exercices a et b jusqu'à ce que tu te sentes à l'aise. AVERTISSEMENT 1: dans ce manuel il y a plusieurs exercices: pour éviter les conséquences d'une mauvaise manipulation, il est vivement conseillé d'utiliser l'option lecture seule de vi. AVERTISSEMENT 2: par contre l'idée de ne pas faire les exercices est mauvaise. ________________________________________________________________________________ 0 INTRODUCTION 0.0 Qu'est ce que vi ? 0.1 Pourquoi apprendre vi ? 0.2 Comment apprendre vi ? 1 POUR COMMENCER 1.0 Premier pas: MODE COMMANDE et MODE INSERTION 1.1 Les commandes de base 1.2 Pour se déplacer 1.3 Et maintenant au travail ! 1.4 Recherche de chaînes 1.5 L'utilisation de set 2 INFORMATIONS SUPPLEMENTAIRES 2.0 Autres commandes 2.1 Substitution de chaînes 2.2 Ecriture de fichiers 2.3 Lecture d'autres fichiers 2.4 Ouvrir plusieurs fichiers en même temps 2.5 Ouvrir un fichier en lecture seule 2.6 Commandes du shell 2.7 Donnez-moi un shell ! 2.8 Les macros ________________________________________________________________________________ *** 0 INTRODUCTION -- 0.0 Qu'est ce que vi? vi (en minuscule) est un éditeur de texte, ou plutôt un programme qui consent à écrire des fichiers texte. -- 0.1 Pourquoi apprendre vi? Pourquoi se fatiguer à apprendre à utiliser un mystérieux et énigmatique éditeur tel que vi alors qu'il y en a tant d'autres beaucoup plus simples et pratiques ? Pour chacun des motifs suivant : a - vi est le seul éditeur que tu peux être sur de trouver sur TOUTES les machines UNIX/LINUX; b - vi peut manipuler d'énormes fichiers; c - vi est exceptionnellement puissant; d - vi permet de faire des opérations complexes de manière efficace et rapide. -- 0.2 Comment apprendre vi ? Progressivement. C'est une grave erreur de vouloir tout apprendre immédiatement: la quantité de choses que l'on peut faire avec vi est énorme et pourrait décourager au premier abord, en réalité on peut commencer à travailler avec un nombre très limité de commandes. Bien souvent une mystérieuse commande d'une seule lettre se mémorise mieux si l'on remarque que c'est la première lettre d'un mot anglais significatif. *** 1 POUR COMMENCER -- 1.0 Premier pas : MODE COMMANDES et MODE INSERTION Il est important que tu te rendes compte rapidement que vi fonctionne en deux modes: le MODE COMMANDES et le MODE INSERTION: * en mode commandes tu indiques à vi ce que tu veux faire; * en mode insertion tu peux insérer du texte dans le fichier que tu édites. Q- "Dans les premiers exercices que j'ai fait (sortir de vi, monter et descendre dans le fichier) je donnais des ordres ?" R- Oui Q- "Mais pourquoi tout ce bazar, Mode Commandes, Mode Insertion, hein ?" R- Parce que malgré les apparences tout cela facilite les choses, spécialement si tu travailles dans un environnement "caractères seuls". Q- "Comment dois je faire pour passer du Mode Insertion au Mode Commandes et vice versa ?" R- Pour passer du Mode Insertion au Mode Commandes il suffit de presser la touche [ESC]. Pour faire le contraire il suffit de lire le paragraphe 1.1. -- 1.1 Les commandes de base NOTE 0: en général, pour lancer des COMMANDES tu dois être en MODE COMMANDES (de là vient le nom). Dans le doute appuie sur la touche [ESC]. Les commandes qui suivent te font passer du Mode Commandes au Mode Insertion (tu pourras alors insérer du texte). iTexte (insert) insert la chaîne "Texte" à la position du curseur aTexte (apend) ajoute la chaîne "Texte" oTexte (open) ouvre une nouvelle ligne en bas et écrit "Texte" OTexte (open) ouvre une nouvelle ligne en haut et écrit "Texte" NOTE 1: vi distingue les minuscules des majuscules. NOTE 2: Lorsque tu as fini d'écrire ton Texte tu dois le communiquer à vi, sinon tu resteras éternellement en mode insertion. Q- "Comment dois je faire pour sortir du mode insertion ?" R- Appui sur la touche [ESC] Q- "Cela va t il me mettre en mode commande ?" R- Exactement. Il n'y a pas d'autres modes: ou commandes ou insertion. NOTE 3: Les commandes précédées de ":" sont affichées sur la dernière ligne en bas de l'écran et ont besoin que tu appuies sur la touche [ENTREE]. Les autres ne sont pas affichées. Les commandes suivantes sont aussi utilisées fréquemment (tu resteras en mode commandes) : J (join) unit la ligne courante avec la suivante x supprime le caractère placé sous le curseur. u (undo) annule la dernière modification.... . ....le refait :w (write) sauvegarde le fichier courant (celui sur lequel tu travailles) :w unautrefichier sauvegarde le fichier dans "unautrefichier" :e unautrefichier édite le fichier "unautrefichier" :q (quit) sort et c'est tout; si tu n'as pas sauvegardé les modifications il te demande si tu veux le faire. :q! (quit!) sort sans sauvegarder les modifications :wq! (write quit) sauvegarde et sort. :7 amène le curseur au début de la 7éme ligne G amène le curseur à la fin du fichier dd (delete) efface la ligne courante Exercices: a - vas à la ligne 99 puis à la ligne 199 b - vas à la fin de ce fichier en utilisant la commande G (vois tu quelque chose de bizarre ?) retourne à la ligne 199 c - (tu trouveras d'autres exercices à la fin du paragraphe 1.3 mais il vaut mieux que tu lises d'abord le paragraphe 1.2) -- 1.2 Pour se déplacer Q- "Comment faire pour écrire le texte où je veux moi et non pas ou il veut lui ?" R- En déplaçant le curseur dans le fichier. Les touches à utiliser en mode COMMANDES sont: h déplace le curseur à gauche..... j ...en bas.... k ...en haut... l ...à droite... Tu es invité à tester par toi-même. Naturellement si tu utilises ces commandes en mode insertion tu verras ton fichier se remplir de hhjjjjkkklll...... Q- "Mais ces commandes je ne vais jamais me les rappeler!" R- Du calme. Parce que j'ai comme un pressentiment que tu serais tenté d'utiliser les touches fléchées du clavier (après tout elles fonctionnent peut être qui sait!) je vais te dire pourquoi ce n'est pas une bonne idée de te fier à ces touches: elles ne fonctionnent pas toujours et cela peut parfois poser des problèmes. Q- "Alors je l'écris quelque part..." R- Un instant. Tu remarqueras que les touches hjkl sont alignées sur le clavier. En outre la touche "j" a indubitablement une tendance à aller vers le BAS, ce qui peut t'aider à te rappeler sa fonction; "k" se projète vers le HAUT, enfin "h" est la lettre la plus à GAUCHE du groupe (regarde le clavier , pas moi) et "l" la plus à DROITE. Pour déplacer le curseur rapidement il existe d'autres commandes : w (word) déplace le curseur au début du mot suivant b (backward) déplace le curseur au début du mot précédent e (end) déplace le curseur à la fin du mot suivant Exercices: a - Teste les touches suivantes : w, b, e, h, j, k, l -- 1.3 Et maintenant au travail ! Maintenant commence à jouer un peu avec vi! Aie toujours présent à l'esprit dans quel mode tu es: dans le doute la touche [ESC] te ramènera au mode commande. Exercices: a - Enregistre le contenu de ce fichier dans un nouveau fichier bordel.txt b - Enregistre aussi le contenu de ce fichier dans un nouveau fichier poubelle.txt c - ouvres le fichier bordel.txt après être sorti préalablement de ce fichier: à l'invite de commande tape vi bordel.txt maintenant (comme tu n'as pas utiliser l'option lecture seule -Readonly) tu as les plein pouvoirs sur le fichier bordel.txt: faits un massacre avec les exercices qui suivent d - essaie de créer de nouvelles lignes (en haut en bas en fonction du curseur) e - ajoute du texte en utilisant les commandes "a" et "i": quelle est la différence ? f - qu'arrive t-il si en mode INSERTION tu appuies sur la touche [ENTREE]? g - enregistre de temps en temps le fichier bordel.txt h - déplace le curseur où tu veux en utilisant les touches h, j, k, l: Fonctionnent-elles? (tu n'auras pas oublier que tu dois UNIQUEMENT les utiliser en mode commandes? Dans ce cas appuie sur [ESC] I - édite le fichier poubelle.txt SANS sortir de bordel.txt: utilise la commande: :e poubelle.txt et détruits le en faisant les expériences suivantes j - joint deux lignes (avec quelle commande?) k - supposons que tu aies uni deux lignes par erreur: annule l'opération l - qu'arrive t-il si tu annules l'annulation d'une action? m - supprime un ou plusieurs caractères n - ajoute deux nouvelles lignes de texte o - essaie de faire refaire à vi l'exercice "n" en utilisant la commande "." p - utilise la commande "dd" pour supprimer des lignes q - continue à t'amuser (sur un des deux fichiers (bordel.txt ou poubelle.txt) jusqu'à ce que tu te sentes raisonnablement sûr de toi Bien, que dirais tu de créer un nouveau fichier rien qu'à toi? Ouvres une autre fenêtre (si tu peux ou sinon sort de ce fichier) et tape: vi nomfichier Bien que cela soit possible, c'est une mauvaise idée d'éditer en deux endroits différents: donc nomfichier devrait être différent du nom de CE fichier) Remarque que TU N'AS PAS ouvert le fichier avec l'option "-Readonly" (lecture seule).Si le fichier existait déjà (j'espère que dans ce cas cela t'importe peu) tu peux le détruire avec tes expériences. Q- "Que sont tous ces signes au début de chaque ligne, il me semble les avoir déjà vu quelque part?" R- ...bien sur, ce sont des 'tildes', elles indiquent la fin de ton fichier. Tu les as vus aussi à la fin de ce fichier. Si ton fichier est vide tu verras des tildes comme cela: ~ ~ ~ ~ Exercices: a - refaits autant de fois que tu le veux quelques-uns des exercices a-q, en particulier: b - insère du texte à l'endroit que tu veux c - a propos: les commandes h, j, k, l fonctionnent aussi là où se trouvent seulement les ~? (Je ne veux pas dire juste au-dessus où il y a les 4 "~" mais celles qui indiquent réellement la fin du fichier) -- 1.4 Recherche de chaînes Pour rechercher vers le bas la chaîne "per exemplum" frappe maintenant la commande /per exemplum Même cette commande apparaît dans la dernière ligne en bas. Si elle n'apparaît pas c'est simplement que TU N'ES PAS en mode commandes (donc appuie sur [ESC] pour y être). pour trouver l'occurrence suivante tape la commande n (next) pour l'occurence précédente tape N les recherches vers le haut sont identiques sauf que l'on utilise ?per exemplum la signification de n et N est inversée. Exercices: a - trouve toutes les chaînes 'per exemplum' de ce fichier en utilisant la commande '/' et en frappant soit 'n' soit 'N' b - refaits l'exercice "a" en utilisant les commandes '?', 'n' et 'N' tu remarqueras rapidement que taper /PER EXEMPLUM ou /per eXemplum n'est pas la même chose que /per exemplum Cette caractéristique de vi, qui vient du fait que les systèmes UNIX font la différence entre les majuscules et les minuscules, peut sembler irritante au départ mais s'avère en réalité très utile. Maintenant essaie de taper /per e.emplum remarque que tu trouves soit "per exemplum" soit "per eXemplum" (mais aussi "per eZemplum"), mais pas "PER EXEMPLUM". Le point correspond (dans les recherches) à un caractère non défini. Q- "Et si je veux rechercher exactement la chaîne 'per e.emplum'?" R- Essaie avec /per e\.emplum Certains caractères sont interprétés d'une manière particulière. Pour qu'ils soient considérés comme des caractères normaux il suffit de les faire précéder par \. Par exemple: l'astérisque (*) est un caractère spécial; pour rechercher le début de chaque chapitre marqué par '***' tu devras taper /\*\*\* Q- "Qu'arrivera t-il si par flemme je tape la commande qui suit?" /\*\ R- Essaie. Comme tu vois la paresse n'est pas récompensée. Mais comme moi aussi je suis un peu flemmard je te suggère ceci: /\*\ Q- "Mais c'est pareil!" R- Non Monsieur, j'ai ajouté un espace après le dernier astérisque. Essaie (pour revenir ici recherche la chaîne 'Non Monsieur'). cELA TE MONTRE QU'avec vi tu peux voir les caractères cachés: si cela a piqué ta curiosité alors recherche la chaîne 'i set'. Q- "\ est aussi un caractère spécial?" R- Oui. Essaie de rechercher la chaîne 'per e\.emplum'. avant de t'impatienter tape /per e\\\.emplum '/' est aussi un caractère spécial: pour rechercher un '/' tu dois taper /\/. Exercices: a - trouves les chaînes '\*\*\*' e 'per e\\\.emplum' b - trouve le début de chaque paragraphe, marqué par la chaîne '--' mais SANS passer par cet exercice. '-' Est il un caractère spécial? c - recherche la chaîne '--' de l'exercice précédent SANS passer par aucun des paragraphes ni par cet exercice. (') L'apostrophe est il un caractère spécial? Et le guillemet (")? d - qu'arrive t-il si tu effectues les recherches suivantes? (Essaie!) /... .X...... /... .X /.....X la dernière recherche est vraiment différente de l'avant dernière? e - recherche la chaîne '../images' sans passer par './un répertoire/images' -- 1.5 L'utilisation de set Pour voir les caractères cachés essaie (en mode commandes) la commande :set list Les $ qui apparaissent te montre la fin de chaque ligne et te révèlent les éventuels espaces vides (comme par exemple la fin de cette ligne). Pour enlever tous ces $ tape :set nolist Pour afficher/[masquer] les lignes numérotées :set number :set nonumber Pour afficher/[masquer] en bas à droite dans quel mode tu es: :set showmode :set noshowmode Mais parce que vi est célèbre pour la profusion de ses commandes il existe des alternatives (de même signification) mais plus synthétiques: :set li :set noli :set nu :set nonu :set smd :set nosmd Exercices: a - Essaie de voir ce qui arrive quand tu tapes: :set nu li smd :set nu noli smd *** 2 INFORMATIONS SUPPLEMENTAIRES -- 2.0 Autres commandes Les commandes qui suivent ne sont pas vraiment vitales: tu les apprendras au fur et à mesure, mais il est bon de savoir qu'elles existent. ITexte (insert) insert la chaîne "Texte" au début de la ligne courante ATexte (append) ajoute la chaîne "Texte" à la fin de la ligne courante dw (delete word) efface le mot courrant, à partir de la position actuelle du curseur (tu reste en mode commandes) cw (change word) change le mot courrant, à partir de la position du curseur (tu passes en mode insertion) 5dw efface 5 mots 5cw change 5 mots s (substitute) substitue le caractère sous le curseur 5s substitue 5 caractères à partir du curseur x supprime le caractère sous le curseur 5x supprime 5 caractères à partir du curseur dd (delete) supprime la ligne courrante 5dd supprime 5 lignes, à partir de la ligne courrante :18,22d supprime 5 lignes de la 18 à la 22 (comprise) D supprime le reste de la ligne à partir de la position du curseur cc (change) change toute la ligne courante 5cc change 5 lignes à partir de la ligne courante :18,22d change 5 lignes de la 18 à la 22 (comprise) C change la partie restante de la ligne courante ZZ enregistre (s'il y a une modification à enregister) et sort. yw (yank) enregistre dans un tampon le (mot) courrant... yy ...toute la ligne courante... 5yy ...ou 5 lignes à partir de la ligne courante NOTE: lorsque tu copies (yank) ou supprimes quelque chose, cela est mis dans un tampon, pour une éventuelle utilisation comme le (copier coller) p (print) écrit les lignes ou les mots contenus dans le buffer 0 (zéro) amène le curseur au début de la ligne $ amène le curseur à la fin de la ligne :$ amène le curseur à la fin du fichier (équivalent à G) ^ amène le curseur au premier caractère non vide de la ligne courante 7| amène le curseur au septième caractère H (high) amène le caractère sur la première ligne de la page courante L (low) amène le curseur sur la dernière ligne de la page gourante M (middle) amène le curseur à la moitié de la page courante [CTRL] u (up) remonte d'une demi page [CTRL] d (down) descend d'une demi page [CTRL] y remonte d'une ligne en maintenant le curseur à sa place [CTRL] e descend d'une ligne en maintenant le curseur à sa place [CTRL] g fournit des informations sur le fichier courant [CTRL] l rafraîchit la page courante (refresh) [CTRL] h déplace le curseur en arrière pour d'éventuelles corrections (peut être utilisé en mode insertion) fx (find) trouve le caractère "x" suivant sur la ligne courante ; trouve le caractère "x" suivant sur la ligne courante , trouve le caractère "x" précédent sur la ligne courante Fx (Find) trouve le caractère "x" précédent sur la ligne courante ; trouve le caractère "x" précédent sur la ligne courante , trouve le caractère "x" suivant sur la ligne courante Exercices: a - vérifie si les commandes suivantes fonctionnent (pour revenir ici recherche la chaîne "Exercices") 0, $, :$, ^, 3|, H, L, M b - essaie les commandes [CTRL] u, [CTRL] d, [CTRL] y, [CTRL] e, [CTRL] g, [CTRL] l, [CTRL] h c - positionnes le curseur sur la ligne précédente et trouves tous les "T" en utilisant les commandes f et F d - [CTRL] h est une commande un peu particulière: d1) quand tu es en mode insertion tu peux t'en servir pour corriger une chaîne EN RESTANT en mode insertion; d2) quand tu es en mode commande tu peux t'en servir pour corriger une commande que tu n'as pas tapé correctement. Tu es invité à faire quelques expériences: vérification d1) Insère du texte et corrige le AVANT de revenir en mode commandes: par exemple tu peux insérer MauvaisTexte et le corriger par BonTexte SANS passer en mode commandes; vérification d2) Corrige une commande comme :set li (tu voulais taper :set nu). Corrige la commande /RecherchelaMauvaiseChaine en /RecherchelaBonneChaine sans recommencer au début. e - les commandes yy, dd utilisées avec p, sont rapides et d'usage fréquent: essaie de recopier ou de déplacer une ou plusieurs lignes de texte quelque part: positionne le curseur sur la première ligne que tu veux copier, tape 3yy (par exemple), amène le curseur où tu veux et tape p: où vont s'insérer les lignes? (Pour déplacer les lignes utilise 3dd, p) f - tu es encouragé, non pas à apprendre maintenant, mais au moins à vérifier, que les autres commandes qui modifient le fichier fonctionnent (pour ces essais utilises un autre fichier, du genre bordel.txt) -- 2.1 Substitution de chaînes Pour substituer une "ancienne chaîne" par une "nouvelle chaîne" on peut utiliser plusieurs commandes: :s/ancienne chaîne/nouvelle chaîne s'il y a deux chaînes "ancienne chaîne" sur la ligne courante la commande remplace seulement la première :s/ancienne chaîne/nouvelle chaîne/g remplace toutes les chaînes "ancienne chaîne" de la ligne courante NOTE: Dans les commandes qui suivent l'option /g est facultative: si elle est omise seule la première chaîne "ancienne chaîne" sera remplacée :1,9s/ancienne chaîne/nouvelle chaîne/g remplace toutes les chaînes "ancienne chaîne" dans les lignes 1 à 9 :7,$s/ancienne chaîne/nouvelle chaîne/g remplace toutes les chaînes "ancienne chaîne" de la ligne 7 à la fin du fichier :%s/ancienne chaîne/nouvelle chaîne/g remplace toutes les chaînes "ancienne chaîne" du fichier -- 2.2 Ecriture de fichiers Tu sais déjà que tu travailles le fichier "premierfichier" avec vi, :w enregistre les éventuelles modifications dans le fichier "premierfichier" :w autrefichier écrit le contenu de "premierfichier" dans le fichier "autrefichier" Tu peux faire autrement: :3,9w autrefichier écrit les lignes 3 à 9 (comprise)du fichier courant dans le fichier "autrefichier" Si par contre "autrefichier" existe déjà :w! autrefichier écrase le fichier "autrefichier" :w>>autrefichie ajoute le fichier courant à la fin de "autrefichier" :3,9w>>autrefichier ajoute les lignes 3 à 9 (comprise) du fichier courant à la fin du fichier "autrefichier" Exercices: a - en utilisant les commandes qui précèdent et toutes celles qui peuvent te servir, crée à partir de ce fichier un nouveau fichier qui contiendra une synthèse des commandes de vi dont tu penses avoir le plus besoin. Suggestion: commence par numéroter les lignes de ce fichier et fait un usage abondant du paragraphe 2.2 -- 2.3 Lecture d'autres fichiers Si tu as besoin d'ajouter un fichier a un endroit bien précis tu peux utiliser la commande :r uncertainfichier ajoute le fichier "uncertainfichier" au fichier courant à partir de la ligne se situant après celle du curseur (le fichier "uncertainfichier" continue d'exister) Exercices: a - essaie de voir si c'est vrai: procure toi une paire de fichiers du type poubelle.txt et faits le test -- 2.4 Ouvrir plusieurs fichiers en même temps Avec vi tu peux éditer plusieurs fichiers en même temps, avec vi premierfichier deuxièmefichier troisièmefichier [...] vi te fera ouvrir les fichiers successivement: tu verras d'abord "premierfichier" puis avec la commande :n (next) tu passeras au second puis dans le même mode au troisième. Par contre pour revenir au fichier précédent tape :N NOTE: C'est facile à se rappeler! Cela ressemble beaucoup à la recherche de chaînes ou par contre il n'y avait pas le ":" Q- "Pourquoi le fait de pouvoir ouvrir plusieurs fichiers devrait-il m'intéresser?" R- Parce qu'il est possible que tu aies besoin de faire la même opération sur plusieurs fichiers (recherche, modification, remplacement de chaînes...). En utilisant cette potentialité de vi tu peux faire tout cela très rapidement. -- 2.5 Ouvrir un fichier en lecture seule Tu sais déjà que tu peux utiliser l'option -Readonly (lecture seule). A savoir vi -R nomfichier Avec l'option -Readonly tu peux aussi ouvrir plusieurs fichiers en même temps vi -R premierfichier deuxièmefichier troisièmefichier [...] -- 2.6 Commandes du shell Q- "Mais qu'est ce c'est qu'un shell?" R- C'est l'invite de commande. Ou plutôt le porte voix de tes exigences envers le système d'exploitation. Pour envoyer une commande quelconque au système d'exploitation tu dois la faire précéder de ":!". Par exemple si tu es sous UNIX et que tu veux taper la commande "ls" SANS sortir de vi, tapes (en mode commandes) :!ls (Evidement si tu n'es pas sous UNIX tu devras utiliser les commandes de TON système d'exploitation!) Exercices: a - essaie de taper toutes les commandes que tu veux (mais ne supprime pas ce fichier!) SANS sortir de vi b - essaie de voir ce qui arrive si tu concatènes des commandes (avec"|"), par exemple (sous UNIX) :!ps -ef | grep vi c - si ton système accepte que plusieurs commandes soient lancées ensemble essaie de les lancer à partir de vi par exemple en tapant (sous UNIX) :!pwd; ls -l; ps -ef | grep vi d - tu t'es trompé! Ou bien ton doigt est tombé sur la touche [ENTREE] et le résultat de la commande précédente a disparu! Recommence! Suggestion: frappe :!! Q- "A partir de vi est ce que je peux faire la même chose qu'à partir du prompt" R- Oui -- 2.7 Donnez-moi un shell ! Pour ouvrir un shell pendant que tu édites un fichier avec vi il suffit (en mode commandes) de taper la commande :sh Pour retourner dans vi il suffit de fermer le shell (exit ou CTRL+D sous UNIX). Comme par magie le fichier sur lequel tu travaillais réapparaît! N'aie pas peur: Essaie! Q- "Que puis je faire avec un shell?" R- Tu peux utiliser toutes les commandes de ton système d'exploitation. Par exemple tu peux éditer le nouveau fichier "unautrefichier" avec: vi unautrefichier bien sur tu peux ouvrir un autre shell dans lequel tu ouvriras un autre ficher "troisièmefichier" avec: vi troisièmefichier dans lequel tu pourras ouvrir un autre shell, etc., etc., jusqu'à n'en plus finir. Mais il vaut mieux ne pas exagérer. -- 2.8 Les macros N'as tu jamais essayé avec ton éditeur habituel, de supprimer le dernier caractère de chacune des lignes? (par exemple dans un programme de 4000 lignes de code....) Grâce aux macros, il est possible de faire cela (et bien d'autres choses) dans vi. Malheureusement, l'utilisation des macros va bien au delà des buts de ce manuel, si tu éprouves l'irrépressible besoin d'en savoir plus, alors je t'ai définitivement converti et tu peux approfondir tes connaissances tout seul. ________________________________________________________________________________ Copyright (C) 1999 - Massimo Pilolli, Modena - ITALY maxpilolli@yahoo.com Gilles Molesini, Guéret - FRANCE gmolesini@free.fr This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; see the GNU General Public License for more details.