1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
|
---
category: tool
tool: vim
filename: LearnVim-fr.txt
contributors:
- ["RadhikaG", "https://github.com/RadhikaG"]
translators:
- ["Thibault", "https://github.com/napnac"]
lang: fr-fr
---
[Vim](http://www.vim.org)
(Vi IMproved) est le clone le plus populaire de l'éditeur de texte vi sous Unix.
Vim est un éditeur de texte omniprésent sur les systèmes de type Unix, et a pour
objectif la rapidité ainsi que l'augmentation de la productivité. Il a de
nombreux raccourcis claviers pour une navigation et une édition plus rapide.
## Navigation basique avec Vim
```
vim <ficher> # Ouvre <fichier> avec vim
:q # Quitte vim
:w # Sauvegarde le fichier actuel
:wq # Sauvegarde le fichier actuel et quitte vim
:q! # Quitte vim sans sauvegarder
# ! *force* l'exécution de :q, ce qui par conséquent
# oblige vim à quitter sans sauvegarder
:x # Sauvegarde le fichier et quitte vim (raccourcis de :wq)
u # Annuler
CTRL+R # Rétablir
h # Déplace le curseur vers la gauche
j # Déplace le curseur vers le bas
k # Déplace le curseur vers le haut
l # Déplace le curseur vers la droite
# Mouvements au sein d'une ligne
0 # Va au début de la ligne
$ # Va à la fin de la ligne
^ # Va au premier caractère non blanc de la ligne
# Rechercher dans un texte
/mot # Surligne toutes les occurrences du mot après le curseur
?mot # Surligne toutes les occurrences du mot avant le curseur
n # Déplace le curseur sur la prochaine occurrence du mot recherché
N # Déplace le curseur sur la précédente occurrence du mot recherché
:%s/abc/def/g # Transforme les 'abc' en 'def' sur chaque ligne du texte
:s/abc/def/g # Transforme les 'abc' en 'def' sur la ligne actuelle
# Se déplacer vers un caractère
f<caractère> # Se déplace en avant jusqu'à <caractère>
t<caractère> # Se déplace en avant juste avant <caractère>
# Par exemple
f< # Se déplace en avant jusqu'à <
t< # Se déplace en avant juste avant <
# Se déplacer dans un mot
w # Avance d'un mot
b # Recule d'un mot
e # Se déplace jusqu'à la fin du mot actuel
# D'autres raccourcis pour se déplacer
gg # Va au début du fichier
G # Va à la fin du fichier
:NB # Va à la ligne numéro NB (où NB est un nombre)
H # Se déplace jusqu'en haut de l'écran
M # Se déplace jusqu'au milieu de l'écran
L # Se déplace jusqu'en bas de l'écran
```
## Modes
Vim est basé sur le concept de **modes**.
Mode Commande - pour se déplacer et exécuter des commandes (vim démarre dans ce mode)
Mode Insertion - pour éditer le fichier
Mode Visuel - pour sélectionner du texte et réaliser des opérations dessus
Mode Ex - pour entrer des commandes avec ':'
```
i # Mode insertion, avant le curseur
a # Mode insertion, après le curseur
v # Mode visuel
: # Mode ex
<esc> # 'Echap' permet de revenir dans le mode commande
# Copier/Coller du texte
y # Copie le texte sélectionné
yy # Copie la ligne actuelle
d # Supprime ce qui est sélectionné
dd # Supprime la ligne actuelle
p # Colle après le curseur
P # Colle avant le curseur
x # Supprime le caractère sous le curseur
```
## La "Grammaire" de Vim
Vim peut être vu comme un ensemble de commande sous la forme
'Verbe-Modificateur-Nom' :
Verbe - notre action
Modificateur - la manière de faire l'action
Nom - l'objet désigné par l'action
Quelques exemples importants de 'Verbes', 'Modificateurs', et de 'Noms' :
```
# 'Verbes'
d # Supprime
c # Transforme
y # Copie
v # Sélectionne
# 'Modificateurs'
i # A l'intérieur
a # Autour
NB # Nombre
f # Cherche quelque chose et se déplace dessus
t # Cherche quelque chose et se déplace juste avant
/ # Cherche une chaîne de caractères après le curseur
? # Cherche une chaîne de caractères avant le curseur
# 'Noms'
w # Mot
s # Phrase
p # Paragraphe
b # Bloc
# Exemple de 'phrases' ou commandes
d2w # Supprime 2 mots
cis # Transforme l'intérieur de la phrase
yip # Copie l'intérieur du paragraphe
ct< # Transforme le texte du curseur jusqu'au caractère avant le <
d$ # Supprime jusqu'à la fin de la ligne
```
## Quelques raccourcis et astuces
```
> # Indente la sélection d'un bloc
< # Dé-indente la sélection d'un bloc
:earlier 15m # Retrouve le document comme il était il y a 15 minutes
:later 15m # Inverse la commande précédente
ddp # Echange la position de deux lignes consécutives (dd puis p)
. # Répète la dernière action effectuée
```
## Macros
Les macros sont des actions enregistrables.
Quand on commence à enregistrer une macro, Vim enregistre **toutes** les actions
et les commandes que vous utilisez, jusqu'à ce que vous arrêtiez d'enregistrer.
Lorsque vous appelez une macro, elle applique exactement les mêmes actions et
commandes sur le texte sélectionné.
```
qa # Commence l'enregistrement de la macro 'a'
q # Arrête l'enregistrement
@a # Appelle la macro 'a'
```
### Configuration de ~/.vimrc
Le fichier .vimrc est utilisé pour configurer Vim lors du démarrage.
Voici un exemple de fichier ~/.vimrc :
```
" Exemple de ~/.vimrc
" 2015.10
" Nécessaire à Vim pour être 'iMproved'
set nocompatible
" Détermine l'extension du fichier à partir du nom pour permettre une indentation
" automatique intelligente, etc.
filetype indent plugin on
" Active la coloration syntaxique
syntax on
" Une meilleure complétion de la ligne de commande
set wildmenu
" Utilise une recherche insensible à la case sauf quand on utilise des majuscules
set ignorecase
set smartcase
" Quand on commence une nouvelle ligne et qu'aucun type d'indentation n'est activé
" on utilise la même indentation que sur la ligne précédente
set autoindent
" Affiche le numéro de la ligne sur la gauche de l'écran
set number
" Options d'indentation, à changer en fonction des préférences personnelles
" Nombre d'espaces visuels par tabulation
set tabstop=4
" Nombre d'espaces par tabulation
set softtabstop=4
" Nombre d'espaces indentés avec les opérations d'indentations (>> et <<)
set shiftwidth=4
" Convertis les tabulations en espaces
set expandtab
" Active des tabulations et des espaces intelligents pour l'indentation et l'alignement
set smarttab
```
### Références
[Vim | Home](http://www.vim.org/index.php)
`$ vimtutor`
[A vim Tutorial and Primer](https://danielmiessler.com/study/vim/)
[What are the dark corners of Vim your mom never told you about? (Stack Overflow thread)](http://stackoverflow.com/questions/726894/what-are-the-dark-corners-of-vim-your-mom-never-told-you-about)
[Arch Linux Wiki](https://wiki.archlinux.org/index.php/Vim)
|