L`éditeur de texte vi - E
Transcription
L`éditeur de texte vi - E
L’éditeur de texte vi Systèmes d’exploitations Semestre 1 Sujet 7 (TP) - 2005-2006 Département Informatique Résumé Le but de cette session de Travaux Pratiques est de vous apprendre à manipuler l’éditeur de fichier texte vi. L’éditeur de texte vi Histoire Le programme vi est un éditeur de texte visuel se basant sur un éditeur de texte en ligne nommé ed1 . Il est apparu dans les premières versions des implémentations d’Unix faites par l’Université de Californie à Berkeley2 . vi est dit visuel car il représente le contenu d’un fichier texte en utilisant toute la zone d’affichage offerte par le terminal dans lequel il est utilisé, alors que les outils en mode ligne n’utilise que le minimum des capacités offertes par les terminaux : la ligne. L’éditeur de texte vi est loin d’être un éditeur très évolué et encore moins convivial3. Néanmoins c’est désormais un standard sur toutes les versions d’UNIX, c’est-à-dire que quelque soit la version d’UNIX que vous utiliserez la commande vi sera présente. Il est très puissant et ne nécessite que très peu de ressources. La majorité des directives de vi sont utilisables dans d’autres commandes UNIX comme par exemple more, sed, etc. Toutes ces commandes sont elles-aussi basées sur l’éditeur en ligne ed. Il existe aujourd’hui un grand nombre d’implémentation de vi toutes différentes, cependant elles respectent un fonctionnement minimum commun que nous allons étudier dans ce TP et qui correspond aux premières versions historiques de vi. Pour plus de détails sur vi vous pourrez vous reporter à la Vi Lovers Home Page à l’adresse suivante : http://www.thomer.com/vi/vi.html Philosophie et fonctionnement de base vi est un éditeur de texte fonctionnant grâce à des modes. Il existe deux modes d’utilisation sous vi : 1. le mode commande ou directive : au démarrage de vi vous êtes toujours dans ce mode. Une commande c’est un ou plusieurs caractères qui permettent de demander un traitement particulier (déplacement, recherche, remplacement, etc.). Il y a 2 types de directives : – les directives de bases sont utilisées en appuyant sur la (ou les) touche(s) leur correspondant – les requêtes ed sont données sur la dernière ligne de votre terminal. Pour cela vous devez : (a) utiliser la directive «:». Le curseur se positionne alors sur la dernière ligne de votre terminal juste après le caractère «:». (b) saisir votre requête (c) valider la requête pour la faire s’exécuter en appuyant sur la touche Enter . 2. le mode de saisie : il existe plusieurs directives permettant de passer dans ce mode. Le seul moyen d’en sortir (de s’en échapper) est d’appuyer sur la touche d’échappement ( Esc ). Comme son nom l’indique ce mode permet de saisir du texte. La position d’édition, ou position courante, dans le fichier est repérée par le curseur (un caractère représentant un bloc noir ou un trait clignotant). Le caractère se trouvant sous le curseur est appelé le caractère courant, il correspond à un caractère du fichier. Pour déplacer le curseur et donc la position d’édition il existe 4 directives particulières : 1. h déplace le curseur d’un caractère vers la gauche 2. l déplace le curseur d’un caractère vers la droite 3. j déplace le curseur d’une ligne vers le bas 4. k déplace le curseur d’une ligne vers le haut Ces directives fonctionnent quelque soit le terminal utilisé, cependant sur les micro-ordinateurs des salles de TP vous pouvez de manière plus simple utiliser les flèches de votre clavier effectuer ces déplacements. 1 Souvent remplacé par ex dans les implémentations récentes d’UNIX implémentations ont données naissance à la famille des Unix BSD. Pour un historique complet des implémentations d’UNIX reportezvous à l’adresse http://www.levenez.com/unix 3 ...pour les utilisateurs habitués à utiliser plus souvent une souris que leur cerveau. Mais tout ça n’est qu’une question d’habitude. 2 Ces 1 Utilisation Dans les descriptions de commandes et exemples du reste de ce TP les mots en italiques représentent des informations que vous devez fournir. – Pour démarrer l’édition d’un fichier il suffit de taper la commande : vi fichier. – Pour sauvegarder un fichier une fois dans vi il vous faut utiliser la requête «:w». – Pour quitter l’éditeur : – si vous n’avez pas modifié le fichier il suffit d’utiliser la requête «:q» – si vous avez modifié le fichier mais que vous ne désiriez pas sauvegarder les modifications il vous faut utiliser la commande «:q!» – si vous avez modifié le fichier et que vous voulez sauvegarder ces modifications il vous faut utiliser l’une des requêtes «:x», «:wq» ou simplement la directive «ZZ». Le tableau 1 vous propose un résumé de quelques directives et commandes de vi. Il est possible de répéter l’éxécution d’une directive en la préfixant par le nombre de fois qu’elle doit être éxécutée. Par exemple pour effacer 10 lignes il suffit de taper ‘10dd’. Lorsqu’il vous semble que vous ne vous souvenez pas dans quelle mode vous êtes et que vous êtes perdu un bon réflexe est d’appuyer plusieurs fois sur la touche Esc jusqu’à ce que vous entendiez un bip sonore signalant que vous êtes de nouveau en mode commande. vi ne connaissant de directive liée à la touche Esc vous signale une erreur en émettant un bip sonore. Avant de commencer le TP il vous est conseillé TRÈS FORTEMENT de lire la page du manuel de nvi. Exercice Exercice 1 : Manipulation de base Q 1. Après être passé en mode texte, lancez l’éditeur nvi4 . Q 2. Insérez le texte suivant, en respectant les passages à la ligne (ne pas entrer les numéros de lignes) : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Rule Rule Rule Rule Rule Rule Rule Rule Rule Rule Rule Rule Rule Rule Rule Rule 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 17. Rule Rule Rule Rule Rule Rule Rule Rule Rule Rule Rule Rule Rule Rule Rule Rule of of of of of of of of of of of of of of of of Modularity: Write simple parts connected by clean interfaces. Clarity: Clarity is better than cleverness. Composition: Design programs to be connected to other programs. Separation: Separate policy from mechanism; separate interfaces from engines. Simplicity: Design for simplicity; add complexity only where you must. Parsimony: Write a big program only when it is clear by demonstration that nothing else will do. Transparency: Design for visibility to make inspection and debugging easier. Robustness: Robustness is the child of transparency and simplicity. Representation: Fold knowledge into data so program logic can be stupid and robust. Least Surprise: In interface design, always do the least surprising thing. Silence: When a program has nothing surprising to say, it should say nothing. Repair: When you must fail, fail noisily and as soon as possible. Economy: Programmer time is expensive; conserve it in preference to machine time. Generation: Avoid hand-hacking; write programs to write programs when you can. Optimization: Prototype before polishing. Get it working before you optimize it. Extensibility: Design for the future, because it will be here sooner than you think. Q 3. Sauvegardez le contenu dans un fichier de nom TDediteur sans quitter vi. Q 4. Déplacez la première règle pour la mettre en fin de texte. Q 5. Insérez le texte suivant entre l’avant dernière et la dernière règle : «KISS rule». Q 6. Faites afficher les numéros de ligne. Q 7. Copiez la règle KISS, 20 fois en début de fichier. Q 8. Utilisez la commande de substitution pour remplacer partout dans le texte «KISS » par «Keep It Simple Stupid ! ». Q 9. Ajoutez en fin de fichier le contenu du fichier /etc/passwd. Q 10. Utilisez la commande de substitution pour remplacer partout dans le texte /bin/bash par /bin/csh. Q 11. Comptez en utilisant les commandes de recherche de chaîne le nombre de lignes contenant une ou plusieurs occurrence du mot «of ». Q 12. Appelez la commande man nvi sans quitter vi. Q 13. Quittez l’éditeur en sauvegardant le contenu. Q 14. Vous voulez utiliser les directives de déplacement (par exemple ‘$’) mais le caractère $ s’affiche dans votre texte. Pourquoi et que faire ? Q 15. Vous venez de détruire une ligne par erreur, que faire ? 4 nvi est une des implémentations de vi installés sur les machines du département. Il existe des implémentations plus conviviales de vi, comme par exemple vim qui fonctionne sur un grand nombre de système comme par exemple Micro$oft Windows 2 Directives de passage en passage en passage en passage en passage en i I a A mode saisie (dont la fin est signalée par la touche Esc ) mode de saisie (insertion avant le curseur) mode de saisie (insertion avant la ligne courante) mode de saisie (ajout après le curseur) mode de saisie (ajout après la ligne courante) u . 0 $ yy P p x dw dd ZZ /chaine n :requête ed Directives de base (avec fin implicite) annuler la dernière commande répéter la dernière commande positionner le curseur en début de ligne positionner le curseur en fin de ligne copie la ligne courante dans un tampon colle le contenu du tampon avant la ligne courante colle le contenu du tampon après la ligne courante suppression du caractère courant supprimer le mot courant supprimer la ligne courante sortie avec sauvegarde des modifications recherche de chaine répète la dernière recherche effectué à partir de la position courante effectue la requête ed spécifiée e f ichier w w f ichier n1 $ d n1 ,n2 d m n n1 ,n2 m n3 tn n1 ,n2 t n3 s/chaine1 /chaine2 / s/chaine1 /chaine2 /g n1 ,n2 s/chaine1 /chaine2 /g r fichier !commande set options set nooptions Requêtes ed débuter l’édition (ouvrir ) de f ichier enregistrer le fichier courant enregistrer le fichier courant sous le nom f ichier positionner le curseur à la ligne n1 positionner le curseur à la dernière ligne supprimer la ligne courante supprimer les lignes n1 à n2 déplacer la ligne courante en ligne n déplacer les lignes n1 à n2 en ligne n3 dupliquer la ligne courante en ligne n dupliquer les lignes n1 à n2 en ligne n3 remplacer la première occurence de chaine1 par chaine2 sur la ligne courante remplacer toutes les occurences de chaine1 par chaine2 sur la ligne courante remplacer toutes les occurences de chaine1 par chaine2 pour les lignes de n1 à n2 lire un fichier et l’insérer à la ligne courante appeler une commande UNIX fixe l’option de l’éditeur (cf table 2) supprime l’option de l’éditeur (cf table 2) Tab. 1 – Directives de base de vi number ignorecase autoindent Options de vi affiche les numéros de lignes devant chaque ligne ne pas faire de distinction entre les majuscules et les miniscules pour les recherches indentation automatique des programmes Tab. 2 – Options de l’éditeur vi 3