blob: 42114b67ebb9347a1a665cdb241419f95ddf71ee [file] [log] [blame]
Damien Lejayd419fa22025-06-29 17:50:20 +02001===============================================================================
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
24AIDE 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
32AIDE 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
41NOTE : 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
45RÉ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
66NOTE : 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
73NOTE: on arrive au même résultat avec :pu=system('date')
74 ou, plus court :r!date
75
76RÉ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
95NOTE : 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
113NOTE : 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
117RÉ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
127NOTE : 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
140NOTE : 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
146AIDE MNÉMOTECHNIQUE : demande au registre(") nommé (a) de conserver la
147 (dlé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
152NOTE : 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
170NOTE : 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
174RÉ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~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~