====== 3 Apprendre vi. ======
[[vifaq.html#toc3| Contents of this section]]
Voici quelques notions de base pour l'utilisateur débutant. Tout d'abord, gardez toujours sous les yeux un résumé des commandes. Ce document contient une telle liste, au chapitre 8. Procurez-vous un livre qui parle de vi. Cette FAQ n'est pas encore suffisante pour vous permettre d'apprendre : je ne souhaite pas en faire un manuel complet, car il y a déjà beaucoup de documents de ce genre. Comparez les livres avant d'acheter : vi est parfois très obscur, mais il vaut mieux s'assurer que le livre ne complique pas encore davantage les choses. Regardez s'il y a des exercices. Enfin, procurez-vous vilearn ou vitutor, deux programmes qui vous aideront à comprendre les bases de vi.
===== 3.1 Y a-t-il des jeux pour apprendre à utiliser vi ? =====
Cela peut paraître bizarre, mais il y a plusieurs jeux qui peuvent vous aider à apprendre vi, tout particulièrement pour les bases. Ainsi, si vous avez l'habitude de NetHack, vous savez déjà utiliser les touches hjkl pour déplacer le curseur à l'écran. Dans le même genre, il y a rogue, moria, omega, worm, et snake.
===== 3.2 La différence entre le mode commande et le mode saisie. =====
Il y a dans vi deux modes d'opération très différents, le mode commande, et le mode saisie. C'est son grand atout, disent ses partisans, son grand problème, disent ses détracteurs.
Il est nécessaire de bien comprendre la différence. Au lancement, vi démarre en mode commande. On peut se déplacer dans le fichier, et utiliser des commandes pour modifier certaines parties du texte, couper, copier, coller... En mode saisie, on peut taper du texte.
Les commandes a, i, c, O, et o, entre autres, permettent toutes de passer, avec de légères variations, du mode commande au mode saisie. La touche permet de faire l'opération inverse. Habituez-vous à la différence, c'est une des spécificités de vi. Elle permet d'effectuer la plupart des opérations sans déplacer les mains de la position standard sur le clavier.
Pour débuter, il est pratique d'afficher le mode dans lequel on se trouve. En tapant "echo set showmode >> $HOME/.exrc" sur la ligne de commande, vous mettrez dans le fichier de démarrage de vi l'ordre d'afficher le mode selectionné en bas à droite de l'écran. Pour plus d'information sur les fichiers de démarrage, reportez-vous aux chapitres 8.2 et 9.0. Lorsqu'il n'affiche rien, vous êtes en mode commande.
===== 3.3 Mon clavier n'a pas de touche . Que faire ? =====
Appuyez sur et < [ > en même temps. Si votre clavier dispose d'une touche ** meta **, essayez-la. Si cela ne marche toujours pas, appuyez sur . Certains terminaux DEC utilisent la touche F11 comme touche d'échappement.
===== 3.4 À quoi correspondent ces ~ ? =====
Ils servent seulement à indiquer que vous êtes à la fin du fichier. Ils ne font pas partie de votre document, et il ne faut pas s'en inquiéter.
===== 3.5 Je n'arrive pas à me faire aux touches hjkl pour me déplacer. =====
Tout d'abord, si votre terminal est bien configuré, vous devriez pouvoir utiliser les flèches de déplacement.
Mais si vous comptez vous servir intensivement de vi, il peut être pratique de prendre ce tour de main : c'est beaucoup plus rapide de se déplacer sans lever la main du clavier pour aller sur le pavé des flèches. Un petit truc pour se souvenir des rôles de j et k : la lettre j *descend* en dessous de la ligne, et la lettre k *monte* au-dessus des autres, lorsqu'on les écrit à la main.
===== 3.6 Comment quitter sans sauvegarder ? =====
Tapez **:q!**
===== 3.7 Comment insérer un fichier ? =====
:r nom_de_fichier
Par example, pour insérer le fichier /etc/motd, tapez : ** :r /etc/motd **.
Cela insèrera le fichier correspondant à l'endroit où se trouve votre curseur. Si vous indiquez un nombre N devant le r, il l'insèrera à la ligne N.
===== 3.8 Comment rechercher du texte ? =====
** /texte ** cherchera vers la fin du fichier. ** ?texte ** cherchera vers le début. ** ?? ** ou ** // ** répéteront la dernière commande de recherche. Ce sont des commandes presque standard sous UNIX. De plus, sous vi, n cherchera la prochaine occurrence du texte. N répétera la dernière recherche, mais en sens inverse. On peut utiliser des expressions régulières dans le texte à chercher.
===== 3.9 Comment chercher une chaîne de caractères de contrôle ? =====
** / caractère_de_contrôle **
demande à vi de chercher la chaîne qui suit telle quelle.
===== 3.10 Comment formater un texte ? =====
Si vous avez fmt sur votre machine, il suffit de taper ** !}fmt ** en mode commande (sans : devant). Cela va reformater le texte jusqu'à la fin du paragraphe, de sorte qu'aucune ligne ne va dépasser 72 caractères.
Sinon, cherchez quel est sur votre machine, l'équivalent de fmt. Il y en a un grand nombre dans le domaine public. Sinon, reportez-vous à la section sur les macros.
===== 3.11 Comment copier du texte ? =====
Ce qui suit va vous paraître un peu compliqué, aussi n'hésitez pas à le lire plusieurs fois, et à expérimenter.
** "yy ** va copier une ligne de texte dans le tampon . Un tampon est une zone où des données coupées et collées sont stockées. est une lettre entre a et z. Si on la tape en majuscule, le texte est ajouté au contenu éventuel du tampon. Si on la tape en minuscule, le texte est placé dans le tampon, et ce qu'il contenait est perdu. ** "dd ** va couper une ligne de texte et la placer dans le tampon correspondant. On peut utiliser un modificateur numérique pour couper ou copier plusieurs lignes à la fois.
** "p ** va copier le texte du tampon juste après le curseur. ** "P ** va le placer juste avant le curseur.
** Y ** est un raccourci pour ** yy **.
Pour déplacer le paragraphe précédent, par exemple, il faut aller au début du paragraphe, taper ** "a5dd ** se déplacer là où on veut le mettre, puis taper ** "ap **, ce qui le placera sur la ligne suivante.
Si vous souhaitez couper/coller autre chose que des lignes entières, il faut utiliser ** m ** pour marquer une zone.
===== 3.12 Arg, je viens de taper dG et j'ai perdu ma thèse. Que faire ? =====
Appuyez sur ** u ** pour annuler la dernière modification. ** U ** annulera les changements concernant la ligne sur laquelle est positionnée le curseur (Je vous l'accorde, une thèse d'une ligne n'est pas très utile :). ** :e! ** recharge le fichier sans sauvegarder les changements. De plus, les textes effacés sont stockés dans des tampons numérotés de 1 à 9. En tapant ** "p ** on peut insérer le texte perdu il y a N effacement. On peut parcourir rapidement ces tampons en en essayant un, en tapant ** u **, et en essayant le suivant. Pour rendre cette étape plus rapide, vi utilise le ** . **. On peut donc taper ** "1p u . u . ** jusqu'à arriver au tampon que l'on cherche.
===== 3.13 vi semble être figé, ou se comporte bizarrement. Que faire ? =====
Si vi semble figé, c'est peut-être parce que vous avez appuyé sur par erreur. Pour le sortir de cet état, appuyez sur .
S'il y a, en bas de votre écran, un ** : ** qui ne veut pas partir, c'est que vous êtes passé sans le vouloir dans le ** mode ex **, en tapant ** Q ** en mode commande. Tapez ** vi ** pour retourner à vi.
===== 3.14 Je viens de finir ma dissertation, et j'apprends qu'il faut que je mette chaque partie dans un fichier différent. Comment faire ? =====
** :[m],[n]w nom_de_fichier ** sauvegarde le texte compris entre les lignes m et n dans le fichier nom_de_fichier. Cette méthode pour spécifier un intervalle de lignes fonctionne avec presque toutes les commandes commençant par un ** : **. Si vous tapez ** :[m],[n]w >> nom_de_fichier ** l'intervalle défini sera ajouté à la fin du fichier spécifié.
===== 3.15 À quoi servent les commandes commençant par un ** : ** ? =====
Les commandes précédées d'un double point sont des commandes de l'éditeur ex. Elles offrent une grande flexibilité, par exemple pour chercher du texte et pour le remplacer.
[[vifaq-4.html| Next ]] Chapter, [[vifaq-2.html| Previous ]] Chapter
Table of contents of [[vifaq.html#toc3|this chapter]], General [[vifaq.html#toc|table of contents]]
[[vifaq.html| Top ]] of the document, [[#0| Beginning of this Chapter]]