Maîtriser Vim/Neovim : De Zéro à Expert — Le Guide Ultime
Vim
Neovim
Productivité
Éditeur
DevTools
Terminal

Maîtriser Vim/Neovim : De Zéro à Expert — Le Guide Ultime

FS
Fernand SOUALO
·
5 min read

Maîtriser Vim/Neovim : De Zéro à Expert — Le Guide Ultime

Pourquoi Vim/Neovim ?

Vim n'est pas juste un éditeur de texte — c'est un langage pour manipuler du texte. Une fois maîtrisé, vous éditez du code à la vitesse de la pensée.

Les Avantages

AvantageExplication
VitesseÉdition sans souris, tout au clavier
UbiquitéDisponible sur tous les systèmes Unix, SSH-friendly
LégèretéDémarre instantanément, consomme peu de ressources
ComposabilitéOpérateurs + mouvements = grammaire de l''édition
ExtensibilitéÉcosystème de plugins massif
ProductivitéMacros, répétitions, text objects — automatisation totale

Vim vs Neovim

Neovim est un fork moderne de Vim avec des améliorations significatives :

  • Lua comme langage de configuration (plus rapide que Vimscript)
  • LSP intégré (Language Server Protocol)
  • TreeSitter (coloration syntaxique basée sur AST)
  • Jobs asynchrones natifs
  • Terminal moderne avec :terminal
  • API Lua moderne et rapide

Recommandation : Commencez avec Neovim. Il conserve 100% de compatibilité Vim tout en offrant des fonctionnalités modernes.

Installation

Bash
# macOS
brew install neovim

# Ubuntu/Debian
sudo apt install neovim

# Arch Linux
sudo pacman -S neovim

# Windows (Chocolatey)
choco install neovim

# Configuration basique
mkdir -p ~/.config/nvim
echo ''vim.opt.number = true'' > ~/.config/nvim/init.lua

Les Modes — Le Cœur de Vim

Vim a plusieurs modes pour différentes tâches :

ModeDéclencheurUsage
NORMAL<Esc>Navigation, commandes
INSERTi, a, oInsertion de texte
VISUALv, V, Ctrl-vSélection de texte
COMMAND:Commandes ex (:w, :q)

Mode Normal — Le Mode par Défaut

VIM
h  " ← gauche
j  " ↓ bas
k  " ↑ haut
l  " → droite

Mode Insert — Écriture

VIM
i   " Insert avant le curseur
a   " Insert après le curseur
o   " Insert nouvelle ligne en dessous
I   " Insert au début de la ligne
A   " Insert à la fin de la ligne
O   " Insert nouvelle ligne au-dessus

Mouvements Fondamentaux

Par Mot

VIM
w   " Next word (début du mot suivant)
b   " Previous word
e   " End of word

Par Ligne

VIM
0   " Début de ligne
^   " Premier caractère non-blanc
$   " Fin de ligne
gg  " Début du fichier
G   " Fin du fichier

Recherche

VIM
fX   " Find X — saute au prochain caractère X
FX   " Find backward
tX   " Until — juste avant X
/pattern  " Recherche en avant
n         " Prochaine occurrence
N         " Occurrence précédente

Opérateurs et Text Objects

La vraie puissance : Opérateur + Mouvement = Action

Opérateurs

VIM
d   " Delete (coupe)
c   " Change (supprime et passe en Insert)
y   " Yank (copie)

Text Objects

VIM
iw  " Inner word
aw  " A word (avec espaces)
i"  " Inner quotes
a"  " A quotes (inclut les guillemets)
i(  " Inner parenthèses
a(  " A parenthèses
it  " Inner HTML tag

Exemples

VIM
daw     " Delete a word
ciw     " Change inner word
yi(     " Yank inside parentheses
da]     " Delete around brackets

Registres et Macros

Registres

VIM
"ayiw  " Yank dans registre ''a''
"ap    " Paste depuis registre ''a''
"+yy   " Yank vers clipboard système

Macros

VIM
qa            " Enregistrer macro dans ''a''
... actions ...
q             " Stop recording
@a            " Exécuter macro
10@a          " Exécuter 10 fois

Configuration Moderne (Neovim + Lua)

Créez ~/.config/nvim/init.lua :

LUA
-- Options
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.mouse = ''a''
vim.opt.ignorecase = true
vim.opt.smartcase = true
vim.opt.tabstop = 2
vim.opt.shiftwidth = 2
vim.opt.expandtab = true
vim.opt.termguicolors = true

-- Leader key
vim.g.mapleader = '' ''

-- Keymaps
vim.keymap.set(''n'', ''<leader>w'', '':w<CR>'')
vim.keymap.set(''n'', ''<leader>q'', '':q<CR>'')

Plugins Essentiels

Utilisez lazy.nvim comme gestionnaire :

LUA
-- Fuzzy Finder
{
  "nvim-telescope/telescope.nvim",
  dependencies = { "nvim-lua/plenary.nvim" }
}

-- File Explorer
{
  "nvim-tree/nvim-tree.lua",
  dependencies = { "nvim-tree/nvim-web-devicons" }
}

-- LSP
{
  "neovim/nvim-lspconfig",
  "williamboman/mason.nvim"
}

-- TreeSitter
{
  "nvim-treesitter/nvim-treesitter",
  build = ":TSUpdate"
}

-- Git Integration
{
  "lewis6991/gitsigns.nvim"
}

Workflow Pratique

VIM
" Navigation fichiers
<leader>ff    " Fuzzy find files (Telescope)
<leader>fg    " Grep dans tous les fichiers
<leader>e     " File explorer

" LSP
gd            " Go to definition
gr            " Find references
K             " Hover documentation
<leader>ca    " Code actions
<leader>rn    " Rename symbol

" Buffers
:bn           " Next buffer
:bp           " Previous buffer
:bd           " Delete buffer

" Splits
:vs           " Vertical split
:sp           " Horizontal split
Ctrl-w h/j/k/l " Navigate splits

Astuces Avancées

Marks

VIM
ma        " Set mark ''a''
`a        " Jump to mark ''a''

Dot Command

Le . répète la dernière modification :

VIM
A;<Esc>   " Add ; at end
j.        " Repeat on next line

Global Commands

VIM
:g/console.log/d    " Delete all console.log
:g/TODO/normal A!   " Add ! at end of TODOs

Plan de Progression (30 jours)

Semaine 1 : Fondamentaux

  • Modes, mouvements hjkl, wbe
  • Opérateurs d, c, y
  • Recherche /, n, *

Semaine 2 : Text Objects

  • ciw, daw, di(, da]
  • Visual mode
  • Buffers, splits

Semaine 3 : Automatisation

  • Registres
  • Macros
  • Marks

Semaine 4 : Configuration

  • Neovim + Lua
  • LSP, TreeSitter
  • Plugins

Ressources

Le secret : Pratiquez TOUS LES JOURS pendant 1 mois. Après, vous ne pourrez plus vous en passer. 🚀

Cet article vous a été utile ?

5 min read
0 vues
0 j'aime
0 partages