Qu'est-ce que le format de fichier SWP ?
.swp est un fichier d'échange Vim - un fichier binaire temporaire que Vim crée automatiquement lorsque vous ouvrez un fichier pour édition. Son but est la récupération après plantage : si Vim s'arrête de manière inattendue en raison d'une coupure de courant, de la fermeture du terminal ou d'un plantage système, le fichier d'échange préserve les modifications non enregistrées qui peuvent être récupérées au prochain lancement.
Vim crée le fichier d'échange dans le même répertoire que le fichier édité, en le nommant avec un point initial et le suffixe .swp - par exemple, l'édition de config.py produit .config.py.swp. Sur les systèmes de type Unix, le point initial le rend caché par défaut. Si plusieurs sessions Vim éditent le même fichier, les fichiers d'échange suivants utilisent .swo, .swn, et ainsi de suite.
Le fichier d'échange a une structure binaire basée sur des blocs. Le premier bloc de 4 Ko (bloc 0) contient un en-tête magique b0VIM , la chaîne de version de Vim, le chemin du fichier original, le nom d'hôte, le nom d'utilisateur et l'identifiant du processus (PID). Les blocs suivants stockent le contenu du tampon organisé sous forme d'arbre B (B-tree) de pages de 1 Ko. Le contenu du fichier est stocké en texte brut - le fichier d'échange n'est pas chiffré.
Lorsque Vim ouvre un fichier et détecte un .swp existant, il vous propose de récupérer (r) les modifications non enregistrées ou de supprimer (d) le fichier obsolète. Un fichier .swp résiduel sans processus Vim en cours d'exécution peut être supprimé en toute sécurité ; exécutez vim -r nom_du_fichier pour tenter une récupération explicite. Neovim utilise le même format d'échange.
Une considération de sécurité : les fichiers .swp laissés dans les répertoires d'un serveur web peuvent exposer le code source non chiffré si le serveur est configuré pour servir les fichiers cachés.
Sécurité et sûreté
RISQUE : MEDIUMLe fichier .swp lui-même n'est pas un logiciel malveillant, mais il présente un risque de divulgation d'informations : (1) Laissé dans un répertoire accessible par le web, il expose l'intégralité du texte brut du fichier en cours d'édition ainsi que le nom d'hôte et le nom d'utilisateur du serveur - une découverte classique lors de tests d'intrusion. (2) Validé par erreur dans git : utilisez « git rm --cached .*.swp » et ajoutez « *.swp » à votre .gitignore. Ajoutez « *.swp » à votre .gitignore global (~/.config/git/ignore) pour éviter les validations accidentelles.
Détails du format
en bref- Fichier d'échange de mémoire virtuelle Windows - Windows utilise pagefile.sys/swapfile.sys, pas l'extension .swp ; la confusion avec l'échange du système d'exploitation est infondée mais courante.
- Oracle Forms .swp - Les anciennes versions d'Oracle Forms utilisaient .swp pour un tampon d'échange différent ; très rare.
Programmes qui ouvrent les fichiers SWP
Détails techniques
spécifications approfondies| Usage du fichier | Tampon de récupération après plantage pour les sessions d'édition actives de Vim ; supprimé automatiquement lors d'une fermeture propre |
| Octets magiques (Magic bytes) | `62 30 56 49 4D 20` (« b0VIM ») à l'offset 0 |
| Structure des blocs | Bloc 0 : en-tête de 4 Ko ; blocs suivants : pages de 1 Ko dans un arbre B ; la taille totale augmente avec le contenu du tampon |
| Contenu de l'en-tête | Chaîne de version de Vim, chemin du fichier original, nom d'hôte, nom d'utilisateur et PID stockés dans le bloc 0 |
| Encodage du contenu | Texte brut (pas de chiffrement) ; le contenu original du fichier est directement lisible depuis le fichier d'échange |
| Ordre des octets (Endianness) | Dépendant de la plateforme (correspond à la compilation de l'hôte Vim ; généralement petit-boutiste sur x86 et ARM) |
| Convention de nommage | `.nom_du_fichier.swp` (point initial + suffixe `.swp`) ; caché par défaut sur les systèmes Unix |
| Nommage en cas de dépassement | Lorsque plusieurs sessions éditent le même fichier : `.swo`, `.swn`, `.swm`, … alloués par ordre alphabétique |
| Détection d'obsolescence | Vim vérifie le PID et le nom d'hôte dans l'en-tête du bloc 0 ; avertit si le processus enregistré n'est plus en cours d'exécution |
| Commande de récupération | `vim -r nom_du_fichier` ou appuyez sur `r` à l'invite de récupération lors de la réouverture du fichier dans Vim |
| Compatibilité Neovim | Neovim lit et écrit des fichiers d'échange compatibles avec Vim en utilisant le même format d'en-tête `b0VIM` |
| Note de sécurité | Les fichiers d'échange dans les répertoires accessibles par le web exposent le code source en texte brut si le serveur sert les fichiers commençant par un point |
| Publié | 1991 (Vim 1.0); vi swap concept from 1970s ex/vi |
| Dernière version | Vim 9.1 (2024) swap format; compatible block-based format since Vim 6 |
| Spécification | github.com |
Conversions SWP
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers SWP.