Vim
Vim est l'éditeur de texte universel installé sur tous les systèmes UNIX. Alors que Neovim innove, Vim met l'accent sur la rétrocompatibilité et la stabilité.
Quand l'utiliser
- Édition universelle sur serveur et système : Modifier les configurations système, scripts et code sur n'importe quel serveur Unix/Linux sans installer de logiciel externe.
- Manipulation de texte modale : Composer des transformations textuelles avec la grammaire opérateur-mouvement (
dap,ci",gUiw). - Automatisation de macros sans tête : Enregistrer et rejouer des opérations d'édition répétitives sur des centaines de lignes (
qa,@a). - Édition de commits Git et de fusions : Édition interactive rapide pour les messages de commit, les rebases interactifs et la résolution de conflits de diff.
Démarrage rapide
1. ~/.vimrc minimal
syntax on
set number
set relativenumber
set tabstop=2
set shiftwidth=2
set expandtab
set hlsearch
set incsearch
set clipboard=unnamed
let mapleader = " "
nnoremap <leader>w :w<CR>
nnoremap <leader>q :q<CR>
2. Commandes d'édition de base
i/a: Mode insertion (avant / après le curseur)ci": Modifier entre guillemetsda{: Supprimer autour des accolades:%s/foo/bar/g: Remplacer toutes les occurrences de foo par bar dans le fichier.: Répéter la dernière modification
Concepts fondamentaux
Vimrc de production moderne (~/.vimrc)
Configuration des paramètres sensibles, du gestionnaire de plugins et de la navigation dans le code :
" ~/.vimrc
set nocompatible
filetype plugin indent on
syntax on
" Paramètres généraux
set number
set relativenumber
set expandtab
set shiftwidth = 2
set tabstop = 2
set autoindent
set smartindent
set hlsearch
set incsearch
set ignorecase
set smartcase
set hidden
set backspace=indent,eol,start
set updatetime=300
set clipboard=unnamed
" Mappage de la touche leader
let mapleader = " "
" Navigation rapide entre les fenêtres
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
" Effacer la surbrillance de recherche
nnoremap <leader>h :nohlsearch<CR>
Objets textuels et grammaire essentiels
Combinaison d'opérateurs (d, c, y, v) avec des objets textuels et des mouvements :
ci" - Modifier entre guillemets doubles ("foo" -> "")
di( - Supprimer entre parenthèses
yap - Copier (yank) autour du paragraphe
gUiw - Convertir le mot intérieur en MAJUSCULES
dt, - Supprimer du curseur jusqu'à la virgule
. - Répéter immédiatement la dernière modification
Enregistrement et exécution de macros
Automatisation de transformations répétitives de données tabulaires :
1. Appuyez sur `qa` pour commencer à enregistrer la macro dans le registre 'a'
2. Effectuez les étapes d'édition (p. ex. `0iconst <Esc>A = true;<Esc>j`)
3. Appuyez sur `q` pour terminer l'enregistrement
4. Rejouez la macro sur la ligne courante : `@a`
5. Rejouez la macro 50 fois sur plusieurs lignes : `50@a`
6. Exécutez la macro sur une sélection visuelle : `:'<,'>normal @a`
Modèles courants
Enregistrement et exécution de macros en bloc
Problème : Effectuer des modifications multi-étapes répétitives sur plusieurs lignes.
Solution : Enregistrer les frappes dans le registre q.
- Placez le curseur à la position de départ cible.
- Appuyez sur
qqpour commencer l'enregistrement dans le registreq. - Effectuez la séquence d'édition (p. ex.
I" <Esc> A",<Esc> j ^). - Appuyez sur
qpour arrêter l'enregistrement. - Rejouez avec
@q, ou exécutez sur 50 lignes :50@q.
Gestion de plugins avec vim-plug
Problème : Installer et organiser des plugins Vim sans manipulation manuelle des chemins.
Solution : Utiliser vim-plug.
call plug#begin('~/.vim/plugged')
Plug 'tpope/vim-sensible'
Plug 'tpope/vim-fugitive'
Plug 'preservim/nerdtree'
call plug#end()
Exécutez :PlugInstall dans Vim pour installer.
Bonnes pratiques (2026)
- À faire : Maîtriser la navigation modale (
h,j,k,l,w,b,e) et éviter d'utiliser les touches fléchées. - À faire : Exploiter les Objets Textuels (
ciw,da(,yi{) pour éditer des blocs de code structurés avec un minimum de frappes. - À faire : Utiliser la commande point (
.) pour répéter des transformations textuelles récentes sur des lignes similaires. - À faire : Activer
set hiddenpour que les tampons restent ouverts en arrière-plan sans forcer des sauvegardes immédiates. - À ne pas faire : Installer des centaines de plugins VimScript lourds et hérités ; passer à Neovim Lua si une expérience IDE riche est requise.
- À ne pas faire : Laisser des fichiers d'échange (
.swp) traîner ; configurerset noswapfileou définir un répertoire d'échange dédié. - À ne pas faire : Utiliser des appels externes synchrones dans
~/.vimrcqui provoquent un délai de démarrage notable sur les machines distantes.
Dépannage
| Erreur / Symptôme | Cause | Solution |
|---|---|---|
La copie du presse-papiers système échoue ("+y ne fait rien) | Vim compilé sans support +clipboard | Installer vim-gtk3 (Ubuntu) ou macvim / neovim avec le support du presse-papiers activé. |
Les touches fléchées insèrent les caractères A, B, C, D | Fonctionnement en mode strict compatible Vi | Ajouter set nocompatible en haut du ~/.vimrc. |
| La surbrillance des espaces en fin de ligne persiste après recherche | La surbrillance de recherche est restée active | Appuyer sur :nohlsearch ou lier <leader>h :nohlsearch<CR>. |