Damien Lejay | d419fa2 | 2025-06-29 17:50:20 +0200 | [diff] [blame^] | 1 | =============================================================================== |
| 2 | = B i e n v e n u e dans l e T u t o r i e l de VIM – Version 1.7 = |
| 3 | =============================================================================== |
| 4 | = C H A P I T R E DEUX = |
| 5 | =============================================================================== |
| 6 | |
| 7 | Hic sunt dracones : si cʼest la première fois que vous utilisez Vim |
| 8 | et que vous souhaitez accéder au tutoriel dʼintroduction, tapez |
| 9 | les trois touches :q! puis la touche <ENTRÉE> et recommencez. |
| 10 | |
| 11 | Il vous faudra entre 8 et 10 minutes pour terminer ce chapitre, selon |
| 12 | que vous passiez plus ou moins de temps à expérimenter. |
| 13 | |
| 14 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 15 | Leçon 2.1.1 : REGISTRES NOMMÉS |
| 16 | |
| 17 | |
| 18 | ** Conserver deux mots copiés en parallèle, puis les coller ** |
| 19 | |
| 20 | 1. Déplacez le curseur sur la ligne ci-dessous commençant par : ---> |
| 21 | |
| 22 | 2. Placez-vous nʼimporte où dans le mot 'Édouard' et tapez "ayiw |
| 23 | |
| 24 | AIDE MNÉMOTECHNIQUE : dans le registre(") nommé (a) (y)ank la portion |
| 25 | (i)nterne du (w)ord sous-jacent |
| 26 | |
| 27 | 3. Avancez jusquʼau mot 'chouquettes' (fq ou 2fc ou $ ou /ch<ENTRÉE>) |
| 28 | et tapez "byiw |
| 29 | |
| 30 | 4. Rendez-vous sur le mot 'Vincent' et tapez ciw<CTRL-R>a<ÉCHAP> |
| 31 | |
| 32 | AIDE MNÉMOTECHNIQUE : é(c)hange la partie (i)nterne du (w)ord sous-jacent |
| 33 | avec le <contenu du (r)egistre> nommé (a) |
| 34 | |
| 35 | 5. Rendez-vous sur le mot 'croissant' et tapez ciw<CTRL-R>b<ÉCHAP> |
| 36 | |
| 37 | ---> a) Édouard aura toute autorité sur le contingentement des chouquettes |
| 38 | b) À ce titre, Vincent exercera seul le pouvoir discrétionnaire sur |
| 39 | lʼattribution des croissants. |
| 40 | |
| 41 | NOTE : On peut aussi utiliser les registres avec la commande de suppression. |
| 42 | Taper "sdiw supprimera le mot sous-jacent et en conservera une copie |
| 43 | dans le registre (s). |
| 44 | |
| 45 | RÉFÉRENCES: Registres :h registers |
| 46 | Registres nommés :h quotea |
| 47 | Mouvements :h motion.txt<ENTRÉE> /inner<ENTRÉE> |
| 48 | CTRL-R :h insert<ENTRÉE> /CTRL-R<ENTRÉE> |
| 49 | |
| 50 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 51 | |
| 52 | Leçon 2.1.2 : LE REGISTRE DʼEXPRESSIONS |
| 53 | |
| 54 | |
| 55 | ** Insérer à la volée le résultat dʼun calcul ** |
| 56 | |
| 57 | 1. Déplacez le curseur sur la ligne ci-dessous commençant par : ---> |
| 58 | |
| 59 | 2. Placez-vous sur le nombre |
| 60 | |
| 61 | 3. Tapez ciw<CTRL-R> suivi de =60*60*24<ENTRÉE> |
| 62 | |
| 63 | 4. Sur la ligne suivante, en mode Insertion, ajoutez la date du jour avec |
| 64 | <CTRL-R> suivi de =system('date')<ENTRÉE> |
| 65 | |
| 66 | NOTE : Tous les appels système dépendent de votre système dʼexploitation. Par |
| 67 | exemple sur MS-Windows, utilisez plutôt |
| 68 | system('date /t') ou :r!date /t |
| 69 | |
| 70 | ---> Dans une journée, il y a 100 secondes. |
| 71 | Aujourdʼhui, nous sommes : |
| 72 | |
| 73 | NOTE: on arrive au même résultat avec :pu=system('date') |
| 74 | ou, plus court :r!date |
| 75 | |
| 76 | RÉFÉRENCE : Registre dʼexpressions :h quote= |
| 77 | |
| 78 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 79 | |
| 80 | Leçon 2.1.3 : LES REGISTRES NUMÉROTÉS |
| 81 | |
| 82 | |
| 83 | ** Tapez yy et dd afin de contempler leur effet sur les registres ** |
| 84 | |
| 85 | 1. Déplacez le curseur sur la ligne ci-dessous commençant par : ---> |
| 86 | |
| 87 | 2. Copiez (yy) la ligne 0, puis inspectez les registres avec :reg<ENTRÉE> |
| 88 | |
| 89 | 3. Supprimez la ligne 0 avec "cdd, puis inspectez les registres |
| 90 | (Où pensez-vous retrouver la ligne 0 ?) |
| 91 | |
| 92 | 4. Continuez à supprimer chaque ligne successivement (avec dd), tout en |
| 93 | regardant le résultat au passage avec :reg. |
| 94 | |
| 95 | NOTE : Vous devriez remarquer que les anciennes lignes supprimées descendent |
| 96 | dans la liste des registres au fur et à mesure que vous supprimez de |
| 97 | nouvelles lignes. |
| 98 | |
| 99 | 5. Maintenant collez le contenu des registres suivant, dans cet ordre : |
| 100 | c, 7, 4, 2, 8. i.e collez avec "cp puis "7p puis etc. |
| 101 | |
| 102 | ---> 0. Ceci |
| 103 | 9. zigzag |
| 104 | 8. secret |
| 105 | 7. est |
| 106 | 6. on |
| 107 | 5. axe |
| 108 | 4. un |
| 109 | 3. guerre |
| 110 | 2. message |
| 111 | 1. hommage |
| 112 | |
| 113 | NOTE : Les lignes entièrement supprimées (via dd) restent beaucoup plus |
| 114 | longtemps dans les registres numérotés que les lignes copiées (via yy) |
| 115 | ou les suppressions impliquant des mouvements plus courts. |
| 116 | |
| 117 | RÉFÉRENCE : Registres numérotés :h quote0 |
| 118 | |
| 119 | |
| 120 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 121 | |
| 122 | Leçon 2.1.4 : LʼÉLÉGANCE DES MARQUES |
| 123 | |
| 124 | |
| 125 | ** Lʼart dʼéviter les calculs pour le codeur décérébré ** |
| 126 | |
| 127 | NOTE : En programmation, déplacer de gros blocs de code est souvent une vraie |
| 128 | corvée. Le souci nʼest pas la difficulté de lʼopération, mais la |
| 129 | gymnastique mentale quʼimposent les calculs de numéros de ligne — une |
| 130 | tâche fastidieuse et source dʼerreurs. |
| 131 | La technique qui suit vous épargne justement ce tracas pour des |
| 132 | opérations comme "a147d ou :945,1091d a ou pire encore |
| 133 | i<CTRL-R> suivi de =1091-945<ENTRÉE> |
| 134 | |
| 135 | 1. Déplacez le curseur sur la ligne ci-dessous commençant par : ---> |
| 136 | |
| 137 | 2. Placez-vous sur la première ligne de la fonction et placez une marque (a) |
| 138 | avec ma |
| 139 | |
| 140 | NOTE : peu importe la position exacte sur la ligne. |
| 141 | |
| 142 | 3. Allez à la fin de la ligne, puis à la fin du bloc de code avec $% |
| 143 | |
| 144 | 4. Supprimez le bloc et conservez-le dans le registre (a) avec "ad'a |
| 145 | |
| 146 | AIDE MNÉMOTECHNIQUE : demande au registre(") nommé (a) de conserver la |
| 147 | (d)élétion effectuée depuis le curseur jusquʼà la LIGNE contenant la |
| 148 | marque(') (a) |
| 149 | |
| 150 | 5. Collez le bloc entre BBB et CCC avec "ap |
| 151 | |
| 152 | NOTE : exercez-vous plusieurs fois pour que ça devienne naturel ma$%"ad'a |
| 153 | |
| 154 | ---> AAA |
| 155 | function itGotRealBigRealFast() { |
| 156 | if ( somethingIsTrue ) { |
| 157 | doIt() |
| 158 | } |
| 159 | // the taxonomy of our function has changed and it |
| 160 | // no longer makes alphabetical sense in its current position |
| 161 | |
| 162 | // imagine hundreds of lines of code |
| 163 | |
| 164 | // naively you could navigate to the start and end and record or |
| 165 | // remember each line number |
| 166 | } |
| 167 | BBB |
| 168 | CCC |
| 169 | |
| 170 | NOTE : les marques et les registres ne partagent pas leur espace de noms, |
| 171 | le registre (a) est complètement indépendant de la marque (a). |
| 172 | On ne peut pas en dire autant des registres et des macros. |
| 173 | |
| 174 | RÉFÉRENCES : Marques :h marks |
| 175 | :h mark-motions (différence entre ' et ` ) |
| 176 | |
| 177 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 178 | |
| 179 | Leçon 2.1 RÉSUMÉ |
| 180 | |
| 181 | |
| 182 | 1. Utiliser lʼun des 26 registres nommés (a-z) pour conserver |
| 183 | (copier/supprimer) et coller du texte. |
| 184 | 2. Copier un mot entier en plaçant le curseur sur le mot : yiw |
| 185 | 3. Changer un mot entier en plaçant le curseur sur le mot : ciw |
| 186 | 4. Insérer du texte directement depuis un registre, en mode Insertion : |
| 187 | <CTRL-R>a |
| 188 | |
| 189 | 5. Insérer le résultat dʼune opération arithmétique simple : |
| 190 | <CTRL-R> suivi de =60*60<ENTRÉE> en mode Insertion |
| 191 | 6. Insérer le résultat dʼun appel système : <CTRL-R> suivi de |
| 192 | =system('ls -1')<ENTRÉE> |
| 193 | en mode Insertion |
| 194 | |
| 195 | 7. Inspecter les registres avec :reg |
| 196 | 8. Apprendre pourquoi les suppressions de lignes entières (dd) sont |
| 197 | préservées plus longtemps : elles bénéficient des registres 1 à 9 et sont |
| 198 | préservées plus longtemps que toute autre opération |
| 199 | 9. Apprendre la destination finale de toutes les copies dans les registres |
| 200 | numérotés et à quel point elles sont éphémères |
| 201 | |
| 202 | 10. Placer des marques depuis le mode Normal m[a-zA-Z0-9] |
| 203 | 11. Se déplacer ligne par ligne jusquʼà une marque avec ' |
| 204 | |
| 205 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 206 | |
| 207 | Voilà, vous êtes arrivé à la fin du chapitre deux du tutoriel de Vim. Il est |
| 208 | encore en chantier. |
| 209 | |
| 210 | Ce chapitre a été écrit par Paul D. Parker, |
| 211 | il a été traduit en français par Damien Lejay. |
| 212 | |
| 213 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |