Vad är filformatet SWP?
.swp är en Vim swap-fil - en tillfällig binärfil som Vim skapar automatiskt när du öppnar en fil för redigering. Dess syfte är kraschåterställning: om Vim avslutas oväntat på grund av strömavbrott, stängd terminal eller systemkrasch, bevarar swap-filen osparade ändringar som kan återställas vid nästa start.
Vim skapar swap-filen i samma katalog som den redigerade filen och namnger den med en inledande punkt och suffixet .swp - till exempel skapar redigering av config.py filen .config.py.swp. På Unix-liknande system gör den inledande punkten att filen är dold som standard. Om flera Vim-sessioner redigerar samma fil använder efterföljande swap-filer .swo, .swn och så vidare.
Swap-filen har en binär blockbaserad struktur. Det första 4 KB-blocket (block 0) innehåller en b0VIM magic header, Vim-versionssträng, den ursprungliga filsökvägen, värdnamn, användarnamn och process-ID. Efterföljande block lagrar buffertinnehållet organiserat som ett B-träd av 1 KB-sidor. Filinnehållet lagras i klartext - swap-filen är inte krypterad.
När Vim öppnar en fil och upptäcker en befintlig .swp, uppmanas du att återställa (r) de osparade ändringarna eller radera (d) den föråldrade filen. En kvarlämnad .swp utan någon körande Vim-process är säker att radera; kör vim -r filnamn för att uttryckligen försöka återställa. Neovim använder samma swap-format.
En säkerhetsaspekt: .swp-filer som lämnas kvar i webbserverkataloger kan exponera okrypterad källkod om servern är konfigurerad att visa dolda filer.
Säkerhet & trygghet
RISK: MEDIUMSjälva .swp-filen är inte skadlig kod, men den utgör en risk för informationsläckage: (1) Om den lämnas i en webbtillgänglig katalog exponerar den hela klartexten av filen som redigeras plus serverns värdnamn och användarnamn - ett klassiskt fynd vid penetrationstester. (2) Oavsiktlig commit till git: «git rm --cached .*.swp» och lägg till «*.swp» i .gitignore. Lägg till «*.swp» i din globala .gitignore (~/.config/git/ignore) för att förhindra oavsiktliga commits.
Formatdetaljer
i ett nötskal- Windows Virtual Memory Swap File - Windows använder pagefile.sys/swapfile.sys, inte filändelsen .swp; förväxling med operativsystemets swap-fil är ogrundad men vanlig.
- Oracle Forms .swp - Äldre versioner av Oracle Forms använde .swp för en annan swap-buffert; mycket sällsynt.
Program som öppnar SWP-filer
Tekniska detaljer
djup specifikation| Filsyfte | Kraschåterställningsbuffert för aktiva Vim-redigeringssessioner; raderas automatiskt vid korrekt avslut |
| Magic bytes | `62 30 56 49 4D 20` («b0VIM ») vid offset 0 |
| Blockstruktur | Block 0: 4 KB header; efterföljande block: 1 KB-sidor i ett B-träd; total storlek växer med buffertinnehållet |
| Header-innehåll | Vim-versionssträng, ursprunglig filsökväg, värdnamn, användarnamn och PID lagrat i block 0 |
| Innehållskodning | Klartext (ingen kryptering); originalfilens innehåll är direkt läsbart från swap-filen |
| Byteordning | Plattformsberoende (matchar värdens Vim-bygge; vanligtvis little-endian på x86 och ARM) |
| Namnkonvention | `.filnamn.swp` (inledande punkt + `.swp`-suffix); dold på Unix-system som standard |
| Namngivning vid överflöd | När flera sessioner redigerar samma fil: `.swo`, `.swn`, `.swm`, … tilldelas alfabetiskt |
| Detektering av föråldring | Vim korskontrollerar PID och värdnamn i block 0-headern; varnar om den registrerade processen inte längre körs |
| Återställningskommando | `vim -r filnamn` eller tryck på `r` vid återställningsfrågan när filen öppnas igen i Vim |
| Neovim-kompatibilitet | Neovim läser och skriver Vim-kompatibla swap-filer med samma `b0VIM`-headerformat |
| Säkerhetsnotering | Swap-filer i webbtillgängliga kataloger exponerar källkod som klartext om servern visar punktfiler |
| Släppt | 1991 (Vim 1.0); vi swap concept from 1970s ex/vi |
| Senaste version | Vim 9.1 (2024) swap format; compatible block-based format since Vim 6 |
| Specifikation | github.com |
SWP-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om SWP-filer.