Comment utiliser l’éditeur Vi/Vim sur Ubuntu : Une référence technique complète
Vi et Vim (Vi Improved) sont des éditeurs de texte modaux, pilotés au clavier, qui fonctionnent entièrement dans le terminal, ce qui les rend indispensables pour l’administration de serveurs, l’édition de configuration à distance et les flux de travail de script sur Ubuntu et autres distributions Linux. Vim étend Vi avec la coloration syntaxique, l’annulation multi-niveaux, les fenêtres fractionnées, la prise en charge des plugins et une couche de configuration scriptable — tout en consommant des ressources système négligeables.
Si vous gérez un environnement VPS Hosting ou un serveur bare-metal, la maîtrise de Vim n’est pas optionnelle — c’est une compétence fondamentale. Les sessions SSH n’ont pas toujours accès à une interface graphique, et Vim est presque universellement disponible sur chaque système Unix que vous utiliserez.
Pourquoi Vim Domine Encore les Environnements Serveur
Les IDE modernes sont puissants, mais ils sont sans intérêt lorsque vous êtes connecté à un serveur Ubuntu headless via SSH à 2h du matin pour déboguer une configuration Nginx défaillante. La conception modale de Vim signifie que chaque frappe est une commande — il n’y a pas de dépendance à la souris, pas de surcharge de rendu, et pas de latence introduite par une couche graphique.
Principales raisons pour lesquelles les administrateurs système s’appuient sur Vim :
- Zéro dépendance externe : Fonctionne sur n’importe quelle connexion SSH, y compris les liens à faible bande passante ou à latence élevée
- Disponibilité constante : Préinstallé ou facilement installable sur Debian, Ubuntu, CentOS, Alpine et pratiquement toutes les distributions Linux
- Vitesse à grande échelle : L’édition de fichiers de configuration, de journaux ou de scripts de plusieurs milliers de lignes est plus rapide dans Vim que dans n’importe quel éditeur graphique une fois la mémoire musculaire établie
- Scriptabilité : Le langage de script intégré de Vim (Vimscript) et la prise en charge de Lua (dans Neovim) permettent une automatisation complète des tâches d’édition répétitives
Installation de Vim sur Ubuntu
Ubuntu est livré avec un package `vim-tiny` minimal, qui manque de coloration syntaxique, de prise en charge multi-fichiers et de nombreuses fonctionnalités avancées. Pour une fonctionnalité complète, installez le package complet :
“`bash
sudo apt update
sudo apt install vim -y
“`
Pour vérifier la version installée et confirmer la prise en charge complète des fonctionnalités :
“`bash
vim –version
“`
Recherchez `+syntax`, `+clipboard`, `+python3` et `+multi_byte` dans les indicateurs de fonctionnalités. Un préfixe `-` signifie que cette fonctionnalité a été exclue du binaire. Si vous avez besoin de ces fonctionnalités et qu’elles sont absentes, installez `vim-gtk3` ou `vim-nox` à la place :
“`bash
sudo apt install vim-nox -y # Headless full-feature build
sudo apt install vim-gtk3 -y # GTK3 build with clipboard integration
“`
Cas limite critique : Sur les images de serveur Ubuntu minimales — comme celles utilisées dans les conteneurs Docker ou les Serveurs Dédiés bootstrappés par cloud-init — même `vi` peut être absent. Dans ce cas, installez `vim` explicitement avant de tenter toute édition de fichier de configuration.
Ouverture, Création et Récupération de Fichiers
“`bash
vim filename.txt # Open existing file or create new one
vim /etc/nginx/nginx.conf # Open a system configuration file (use sudo if needed)
sudo vim /etc/ssh/sshd_config # Edit privileged files
vim +42 filename.txt # Open file and jump directly to line 42
vim +/searchterm file.txt # Open file with cursor on first match of searchterm
“`
Récupération de fichier swap : Vim crée automatiquement un fichier swap caché (`.filename.txt.swp`) pendant l’édition. Si votre session plante ou que la connexion SSH est interrompue, rouvrez le même fichier et Vim vous invitera à récupérer les modifications non sauvegardées. Choisissez toujours `(R)ecover` en premier, sauvegardez le contenu récupéré, puis supprimez le fichier swap avec `:e` suivi de `:!rm ~/.filename.txt.swp` ou en exécutant `vim -r filename.txt`.
Ce mécanisme de récupération est particulièrement précieux lors de l’édition de fichiers de configuration critiques sur des serveurs de production — une connexion interrompue ne signifie pas un travail perdu.
Comprendre l’Architecture Modale de Vim
La conception modale de Vim est le concept le plus important à intérioriser. Contrairement aux éditeurs standard où chaque frappe insère un caractère, Vim sépare la navigation, l’édition et l’exécution de commandes en modes distincts.
| Mode | Activation | Objectif Principal |
|---|
| — | — | — |
|---|
| **Normal** | `Esc` (par défaut à l’ouverture) | Navigation, suppression, copie, collage, exécution de macros |
|---|
| **Insertion** | `i`, `a`, `o`, `O`, `I`, `A` | Saisie et insertion de texte |
|---|
| **Visuel** | `v` (caractère), `V` (ligne), `Ctrl+v` (bloc) | Sélection de plages de texte |
|---|
| **Bloc Visuel** | `Ctrl+v` | Sélection et édition par colonne |
|---|
| **Ligne de Commande** | `:` | Opérations sur les fichiers, recherche/remplacement, paramètres, commandes externes |
|---|
| **Remplacement** | `R` | Écrasement des caractères existants |
|---|
| **Ex** | `Q` | Exécution de commandes par lot (rarement utilisé de manière interactive) |
|---|
L’erreur la plus courante des débutants est d’appuyer sur des touches en mode Normal en s’attendant à ce que du texte apparaisse, puis de paniquer lorsque `dd` supprime une ligne ou que `gg` saute au début du fichier. Confirmez toujours votre mode actuel en vérifiant le bas gauche de l’écran — le mode Insertion affiche `– INSERT –`, le mode Visuel affiche `– VISUAL –`, et le mode Normal ne montre rien.
Commandes de Navigation en Mode Normal
Une navigation efficace est ce qui distingue un utilisateur de Vim simplement fonctionnel d’un utilisateur véritablement rapide. Apprenez-les par ordre de priorité :
Déplacement de Base du Curseur
| Touche | Action |
|---|
| — | — |
|---|
| `h` | Déplacer d’un caractère vers la gauche |
|---|
| `l` | Déplacer d’un caractère vers la droite |
|---|
| `j` | Descendre d’une ligne |
|---|
| `k` | Monter d’une ligne |
|---|
| `w` | Sauter au début du mot suivant |
|---|
| `b` | Sauter au début du mot précédent |
|---|
| `e` | Sauter à la fin du mot actuel |
|---|
| `0` | Sauter au début de la ligne |
|---|
| `^` | Sauter au premier caractère non-blanc de la ligne |
|---|
| `$` | Sauter à la fin de la ligne |
|---|
Navigation au Niveau du Fichier
| Touche | Action |
|---|
| — | — |
|---|
| `gg` | Sauter à la première ligne du fichier |
|---|
| `G` | Sauter à la dernière ligne du fichier |
|---|
| `:42` | Sauter à la ligne 42 |
|---|
| `Ctrl+f` | Faire défiler d’une page complète vers l’avant |
|---|
| `Ctrl+b` | Faire défiler d’une page complète vers l’arrière |
|---|
| `Ctrl+d` | Faire défiler d’une demi-page vers le bas |
|---|
| `Ctrl+u` | Faire défiler d’une demi-page vers le haut |
|---|
| `%` | Sauter au crochet, à la parenthèse ou à l’accolade correspondant |
|---|
| `*` | Sauter à l’occurrence suivante du mot sous le curseur |
|---|
| `#` | Sauter à l’occurrence précédente du mot sous le curseur |
|---|
Conseil pour utilisateurs avancés : Préfixez n’importe quelle commande de mouvement par un nombre pour la répéter. `5j` descend de 5 lignes. `3w` saute 3 mots en avant. `10dd` supprime 10 lignes. Ce multiplicateur numérique s’applique à pratiquement toutes les commandes du mode Normal et est la clé pour éditer rapidement.
Entrer et Quitter le Mode Insertion
| Touche | Comportement |
|---|
| — | — |
|---|
| `i` | Insérer avant le curseur |
|---|
| `a` | Ajouter après le curseur |
|---|
| `I` | Insérer au début de la ligne |
|---|
| `A` | Ajouter à la fin de la ligne |
|---|
| `o` | Ouvrir une nouvelle ligne en dessous et entrer en mode Insertion |
|---|
| `O` | Ouvrir une nouvelle ligne au-dessus et entrer en mode Insertion |
|---|
| `s` | Supprimer le caractère sous le curseur et entrer en mode Insertion |
|---|
| `S` | Supprimer la ligne entière et entrer en mode Insertion |
|---|
| `Esc` ou `Ctrl+[` | Retourner en mode Normal |
|---|
Habitude critique : Développez le réflexe d’appuyer sur `Esc` immédiatement après avoir terminé une insertion de texte. Rester en mode Insertion lorsque vous avez l’intention de naviguer est la source de la plupart des modifications accidentelles.
Sauvegarde, Fermeture et Gestion des Fichiers
Ces commandes sont exécutées depuis le mode Ligne de Commande (appuyez d’abord sur `:`) :
| Commande | Action |
|---|
| — | — |
|---|
| `:w` | Sauvegarder (écrire) le fichier actuel |
|---|
| `:w filename.txt` | Sauvegarder sous un nouveau nom de fichier |
|---|
| `:q` | Quitter (uniquement s’il n’y a pas de modifications non sauvegardées) |
|---|
| `:q!` | Forcer la fermeture en ignorant toutes les modifications non sauvegardées |
|---|
| `:wq` ou `:x` | Sauvegarder et quitter |
|---|
| `ZZ` | Sauvegarder et quitter (raccourci en mode Normal) |
|---|
| `ZQ` | Quitter sans sauvegarder (raccourci en mode Normal) |
|---|
| `:w !sudo tee %` | Sauvegarder un fichier ouvert sans privilèges sudo |
|---|
L’astuce `:w !sudo tee %` est une connaissance essentielle pour les administrateurs système. Lorsque vous ouvrez un fichier système comme `/etc/fstab` sans sudo et effectuez des modifications, vous ne pouvez pas sauvegarder avec `:w`. Cette commande redirige le contenu du tampon via `sudo tee` pour écrire le fichier avec des privilèges élevés — sans avoir besoin de fermer et rouvrir Vim.
Opérations d’Édition : Suppression, Copie, Collage et Annulation
Le modèle d’édition de Vim est construit sur les opérateurs + mouvements. Un opérateur (comme `d` pour supprimer ou `y` pour copier) combiné avec un mouvement (comme `w` pour un mot ou `$` pour la fin de la ligne) crée une action d’édition précise.
Commandes d’Édition Principales
| Commande | Action |
|---|
| — | — |
|---|
| `x` | Supprimer le caractère sous le curseur |
|---|
| `X` | Supprimer le caractère avant le curseur |
|---|
| `dd` | Supprimer (couper) la ligne actuelle entière |
|---|
| `D` | Supprimer du curseur jusqu’à la fin de la ligne |
|---|
| `dw` | Supprimer du curseur jusqu’à la fin du mot |
|---|
| `d$` | Supprimer du curseur jusqu’à la fin de la ligne |
|---|
| `d0` | Supprimer du curseur jusqu’au début de la ligne |
|---|
| `yy` ou `Y` | Copier (yank) la ligne actuelle entière |
|---|
| `yw` | Copier du curseur jusqu’à la fin du mot |
|---|
| `p` | Coller après le curseur (ou sous la ligne actuelle pour les copies ligne par ligne) |
|---|
| `P` | Coller avant le curseur (ou au-dessus de la ligne actuelle) |
|---|
| `u` | Annuler la dernière modification |
|---|
| `Ctrl+r` | Rétablir la dernière modification annulée |
|---|
| `.` | Répéter la dernière modification (l’une des commandes les plus puissantes de Vim) |
|---|
| `~` | Basculer la casse du caractère sous le curseur |
|---|
| `>>` | Indenter la ligne actuelle d’un niveau |
|---|
| `<<` | Désindenter la ligne actuelle d’un niveau |
|---|
La commande `.` (point) est sans doute la fonctionnalité Vim la plus sous-utilisée par les débutants. Elle répète votre dernière action composée — si vous avez supprimé un mot avec `dw`, appuyer sur `.` supprime le mot suivant. Si vous avez modifié un mot avec `cw` et tapé un remplacement, `.` applique le même remplacement à l’occurrence suivante. Cela élimine les modifications manuelles répétitives dans les grands fichiers.
Mode Visuel : Sélection Précise de Texte
Le mode Visuel offre trois granularités de sélection :
- `v` — Sélection visuelle caractère par caractère
- `V` — Sélection visuelle ligne par ligne (sélectionne des lignes entières)
- `Ctrl+v` — Sélection visuelle par bloc (édition par colonne)
Après avoir effectué une sélection, appliquez des opérateurs :
| Touche | Action sur la Sélection |
|---|
| — | — |
|---|
| `d` | Supprimer le texte sélectionné |
|---|
| `y` | Copier (yank) le texte sélectionné |
|---|
| `c` | Modifier (supprimer et entrer en mode Insertion) |
|---|
| `>` | Indenter la sélection |
|---|
| `<` | Désindenter la sélection |
|---|
| `~` | Basculer la casse de la sélection |
|---|
| `:` | Entrer en mode Ligne de Commande avec la plage pré-remplie |
|---|
Cas d’utilisation réel du mode bloc visuel (`Ctrl+v`) : Vous avez un fichier de configuration où vous devez commenter 15 lignes consécutives en ajoutant `#` en préfixe. Sélectionnez la première colonne de ces lignes avec `Ctrl+v`, naviguez vers le bas avec `j`, appuyez sur `I` (i majuscule), tapez `#`, puis appuyez sur `Esc`. Vim applique l’insertion à chaque ligne sélectionnée simultanément. C’est une tâche qui nécessiterait une regex ou une répétition manuelle dans la plupart des autres éditeurs.
Recherche et Remplacement
Recherche
“`
/pattern Search forward for pattern (regex supported)
?pattern Search backward for pattern
n Jump to next match
N Jump to previous match
- Search forward for word under cursor
Search backward for word under cursor
:noh Clear search highlighting
“`
Syntaxe de Recherche et Remplacement
“`
:%s/old/new/g Replace all occurrences in entire file
:%s/old/new/gc Replace all with confirmation prompt for each
:%s/old/new/gi Case-insensitive replace across entire file
:10,20s/old/new/g Replace only within lines 10 through 20
:'<,'>s/old/new/g Replace within visually selected range
:%s/bwordb/new/g Replace whole word only (word boundary anchors)
“`
Prise en charge des regex : Vim utilise son propre dialecte de regex. La limite de mot `b`, `d` pour les chiffres, `s` pour les espaces blancs, et `+` (un ou plusieurs) sont disponibles. Pour la syntaxe regex étendue, préfixez avec `v` : `:%s/v(foo|bar)/baz/g` correspond à « foo » ou « bar » et remplace par « baz ».
Travailler avec Plusieurs Fichiers, Tampons et Fenêtres Fractionnées
C’est là que la puissance de Vim devient la plus apparente pour les sessions d’édition complexes.
Tampons
Un tampon est une représentation en mémoire d’un fichier. Vim peut maintenir de nombreux tampons ouverts simultanément.
“`
:e filename Open a file into a new buffer
:ls or :buffers List all open buffers
:b2 Switch to buffer number 2
:bnext or :bn Switch to next buffer
:bprev or :bp Switch to previous buffer
:bd Delete (close) current buffer
“`
Fenêtres Fractionnées
“`
:split filename Horizontal split, open file in upper pane
:vsplit filename Vertical split, open file in right pane
Ctrl+w h/j/k/l Navigate between split panes
Ctrl+w = Equalize split pane sizes
Ctrl+w q Close current pane
“`
Onglets
“`
:tabnew filename Open file in a new tab
:tabnext or gt Switch to next tab
:tabprev or gT Switch to previous tab
:tabclose Close current tab
“`
Scénario pratique : Lors de l’édition de la configuration d’un serveur web sur un VPS avec cPanel, vous pourriez avoir besoin de consulter le fichier `nginx.conf` principal tout en éditant un fichier d’hôte virtuel. Ouvrez les deux dans un fractionnement vertical avec `:vsplit /etc/nginx/nginx.conf` et naviguez entre les panneaux avec `Ctrl+w l` et `Ctrl+w h` — pas besoin de fermer un fichier pour consulter l’autre.
Configuration de Vim avec .vimrc
Le fichier `.vimrc` dans votre répertoire personnel est la configuration persistante de Vim. Il est exécuté en tant que Vimscript à chaque démarrage de Vim.
“`bash
vim ~/.vimrc
“`
Configuration Recommandée pour Serveur de Production
“`vim
" Display settings
set number " Show absolute line numbers
set relativenumber " Show relative line numbers (great for jump commands)
set cursorline " Highlight the current line
set scrolloff=8 " Keep 8 lines visible above/below cursor when scrolling
" Indentation
set autoindent " Copy indent from current line on new line
set smartindent " Context-aware indentation for code
set expandtab " Convert tabs to spaces
set tabstop=4 " Tab width = 4 spaces
set shiftwidth=4 " Indentation width for >> and <<
" Search behavior
set hlsearch " Highlight all search matches
set incsearch " Show matches as you type
set ignorecase " Case-insensitive search
set smartcase " Override ignorecase if search contains uppercase
" Usability
set mouse=a " Enable mouse in all modes
syntax on " Enable syntax highlighting
set encoding=utf-8 " Default encoding
set clipboard=unnamedplus " Use system clipboard for yank/paste
set undofile " Persist undo history across sessions
set undodir=~/.vim/undo " Directory for persistent undo files
" Visual
set showmatch " Briefly jump to matching bracket
set laststatus=2 " Always show status line
set wildmenu " Enhanced command-line completion
“`
Important : La directive `set undofile` crée un historique d’annulation persistant stocké sur le disque. Cela signifie que vous pouvez fermer un fichier, le rouvrir des jours plus tard, et toujours annuler les modifications de la session précédente. Créez le répertoire d’annulation avant d’activer cette option :
“`bash
mkdir -p ~/.vim/undo
“`
Ceci est particulièrement précieux lors de modifications incrémentielles de fichiers de configuration sur des systèmes de production — par exemple, lors du réglage des paramètres PHP-FPM ou de l’ajustement des paramètres SSL sur un serveur exécutant des Certificats SSL pour plusieurs domaines.
Macros : Automatisation des Modifications Répétitives
Les macros sont l’une des fonctionnalités les plus puissantes et les moins utilisées de Vim. Une macro enregistre une séquence de frappes et les rejoue.
“`
qa Start recording macro into register 'a'
[actions] Perform any sequence of Normal/Insert mode commands
q Stop recording
@a Replay macro stored in register 'a'
@@ Replay the last executed macro
10@a Replay macro 'a' ten times
“`
Exemple concret : Vous avez un fichier CSV avec 200 lignes et vous devez entourer le deuxième champ de chaque ligne de guillemets doubles. Enregistrez la macro sur la première ligne, rejouez-la 199 fois avec `199@a`, et la transformation est terminée en moins d’une seconde. Aucun script requis.
Marques et Sauts
Les marques vous permettent de mettre en signet des positions dans un fichier et d’y revenir instantanément.
“`
ma Set mark 'a' at current cursor position
'a Jump to the line of mark 'a'
`a Jump to the exact position of mark 'a'
'' Jump back to position before last jump
Ctrl+o Jump to previous position in jump list
Ctrl+i Jump to next position in jump list
:marks List all current marks
“`
Vim vs. Nano vs. Emacs : Choisir le Bon Éditeur Terminal
| Fonctionnalité | Vim | Nano | Emacs |
|---|
| — | — | — | — |
|---|
| **Courbe d’apprentissage** | Élevée (système modal) | Minimale | Très élevée |
|---|
| **Temps de démarrage** | Quasi-instantané | Quasi-instantané | Plus lent |
|---|
| **Utilisation mémoire** | Très faible | Très faible | Modérée à élevée |
|---|
| **Coloration syntaxique** | Complète | Basique | Complète |
|---|
| **Écosystème de plugins** | Étendu | Minimal | Étendu |
|---|
| **Prise en charge des macros** | Native, puissante | Aucune | Native |
|---|
| **Fenêtres fractionnées** | Oui | Non | Oui |
|---|
| **Édition à distance** | Via SSH nativement | Via SSH nativement | Protocole TRAMP |
|---|
| **Complexité de configuration** | Modérée (.vimrc) | Minimale | Élevée (Elisp) |
|---|
| **Idéal pour** | Utilisateurs avancés, sysadmins | Modifications rapides, débutants | Développeurs, utilisateurs Lisp |
|---|
Pour les tâches d’administration de serveurs — édition de fichiers de configuration, écriture de scripts shell, consultation de journaux — Vim offre le meilleur équilibre entre puissance, disponibilité et vitesse. Nano est acceptable pour les modifications ponctuelles lorsque vous ne pouvez pas vous permettre la surcharge cognitive. Emacs est un choix légitime pour les développeurs qui vivent dans le terminal, mais son empreinte mémoire et son temps de démarrage le rendent moins pratique dans les environnements serveur contraints.
Pièges Courants et Comment les Éviter
1. Éditer des fichiers de production sans sauvegarde
Créez toujours une sauvegarde avant d’éditer des fichiers système critiques :
“`bash
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
sudo vim /etc/nginx/nginx.conf
“`
2. Oublier d’utiliser sudo
Si vous ouvrez un fichier privilégié sans sudo et effectuez des modifications, utilisez `:w !sudo tee %` pour sauvegarder sans perdre vos modifications.
3. Confondre les registres
Lorsque vous supprimez du texte avec `dd`, il va dans le registre par défaut `"`. Si vous copiez ensuite quelque chose avec `yy`, le texte supprimé est écrasé. Pour préserver une copie avant de supprimer, utilisez des registres nommés : `"ayy` copie dans le registre `a`, et `"ap` colle depuis celui-ci.
4. Laisser des fichiers swap sur des systèmes partagés
Les fichiers swap Vim dans `/tmp` ou le répertoire de travail peuvent perturber d’autres utilisateurs ou des processus automatisés. Configurez un répertoire swap dédié dans `.vimrc` :
“`vim
set directory=~/.vim/swap//
“`
La double barre oblique finale amène Vim à encoder le chemin complet du fichier dans le nom du fichier swap, évitant ainsi les collisions.
5. Problèmes de fins de ligne sur les fichiers multiplateformes
Si vous éditez un fichier provenant de Windows, il peut avoir des fins de ligne CRLF (`rn`). Vim affichera `^M` à la fin de chaque ligne. Corrigez cela avec :
“`bash
:%s/r//g
“`
Liste de Contrôle des Points Clés à Retenir
Utilisez ceci comme matrice de décision de référence rapide avant et pendant les sessions Vim :
- Avant d’éditer tout fichier de production : Créez une sauvegarde horodatée avec `cp file file.$(date +%Y%m%d%H%M%S).bak`
- Conscience du mode : Si les frappes n’insèrent pas de texte, appuyez sur `Esc` et confirmez votre mode
- Habitude de sauvegarde rapide : Appuyez sur `Esc` puis `:w` après chaque modification significative — n’attendez pas la fin
- Utilisez `:set number` temporairement si vous devez naviguer vers une ligne spécifique et que vous ne l’avez pas dans `.vimrc`
- Pour la recherche/remplacement global : Testez toujours avec `:%s/old/new/gc` (avec confirmation) avant d’exécuter `:%s/old/new/g` aveuglément
- Invite de fichier swap à l’ouverture : Choisissez toujours `(R)ecover`, sauvegardez le contenu, puis supprimez le fichier swap
- Pour les éditions par colonne : Utilisez le mode bloc visuel `Ctrl+v` plutôt que la répétition manuelle
- Annulation persistante : Configurez `set undofile` dans `.vimrc` sur tout serveur que vous administrez régulièrement
- Intégration du presse-papiers : Si `p` colle un contenu inattendu, vérifiez que `set clipboard=unnamedplus` est défini et que `xclip` ou `xsel` est installé
- En cas de doute : `:help keyword` ouvre la documentation intégrée pour toute commande ou option
Que vous gériez des fichiers de configuration sur des environnements d’Hébergement Web Mutualisé ou que vous mainteniez une infrastructure complexe sur des Serveurs Dédiés, l’efficacité de Vim se cumule avec le temps — chaque commande que vous intériorisez supprime définitivement les frictions de votre flux de travail.
FAQ
Q : Quelle est la différence entre Vi et Vim sur Ubuntu ?
`vi` sur les systèmes Ubuntu modernes est généralement un lien symbolique vers `vim` en mode de compatibilité réduite, ou vers `vim-tiny`. Le vrai Vi est l’éditeur original de 1976 sans coloration syntaxique, sans annulation multi-niveaux et sans prise en charge des plugins. Vim ajoute plus de 100 fonctionnalités par rapport à Vi tout en restant entièrement rétrocompatible avec les raccourcis clavier de Vi.
Q : Comment quitter Vim si je suis complètement bloqué ?
Appuyez plusieurs fois sur `Esc` pour vous assurer d’être en mode Normal, puis tapez `:q!` et appuyez sur Entrée. Cela force la fermeture sans sauvegarder. Si même cela échoue (rare, mais possible dans des états de commandes récursives), appuyez d’abord sur `Ctrl+c`, puis sur `:q!`.
Q : Vim peut-il éditer des fichiers via SSH sans les copier localement ?
Oui. Utilisez `vim scp://user@hostname//path/to/file` pour éditer des fichiers distants directement via SCP. Vim gère le transfert de manière transparente. Alternativement, utilisez `rsync` pour récupérer le fichier, l’éditer localement et le renvoyer — c’est plus rapide pour les grands fichiers.
Q : Comment activer la coloration syntaxique pour un type de fichier spécifique que Vim ne reconnaît pas ?
Exécutez `:set filetype=nginx` (ou `python`, `yaml`, `bash`, etc.) pour attribuer manuellement un type de fichier pour la session actuelle. Pour le rendre permanent pour une extension de fichier spécifique, ajoutez `autocmd BufRead,BufNewFile *.conf set filetype=nginx` à votre `.vimrc`.
Q : Neovim est-il un meilleur choix que Vim pour une utilisation serveur ?
Pour les tâches pures d’administration de serveurs, Vim standard est suffisant et plus universellement disponible. Neovim offre une configuration basée sur Lua, une meilleure prise en charge des plugins asynchrones et un client LSP intégré — des avantages qui comptent principalement pour les flux de travail de développement. Sur les serveurs de production où vous n’installez que le nécessaire, Vim reste le choix pragmatique.
