Hvad er SWP-filformatet?
.swp er en Vim swap-fil - en midlertidig binær fil, som Vim opretter automatisk, når du åbner en fil til redigering. Formålet er gendannelse efter nedbrud: Hvis Vim afsluttes uventet på grund af strømsvigt, lukning af terminalen eller et systemnedbrud, bevarer swap-filen ugemte ændringer, der kan gendannes ved næste opstart.
Vim opretter swap-filen i samme mappe som den redigerede fil og navngiver den med et foranstillet punktum og .swp-suffiks - for eksempel vil redigering af config.py producere .config.py.swp. På Unix-lignende systemer gør det foranstillede punktum filen skjult som standard. Hvis flere Vim-sessioner redigerer den samme fil, bruger efterfølgende swap-filer .swo, .swn og så videre.
Swap-filen har en binær blokbaseret struktur. Den første 4 KB blok (blok 0) indeholder en b0VIM magic header, Vim-versionsstrengen, den originale filsti, værtsnavn, brugernavn og proces-ID. Efterfølgende blokke gemmer bufferindholdet organiseret som et B-træ af 1 KB sider. Filindholdet gemmes i klartekst - swap-filen er ikke krypteret.
Når Vim åbner en fil og registrerer en eksisterende .swp, beder den dig om at gendanne («Recover», r) de ugemte ændringer eller slette («Delete», d) den forældede fil. En efterladt .swp uden en kørende Vim-proces er sikker at slette; kør vim -r filnavn for at forsøge gendannelse eksplicit. Neovim bruger det samme swap-format.
En sikkerhedsovervejelse: .swp-filer efterladt i webserver-mapper kan afsløre ukrypteret kildekode, hvis serveren er konfigureret til at vise skjulte filer.
Sikkerhed og tryghed
RISIKO: MEDIUMSelve .swp-filen er ikke malware, men den udgør en risiko for informationslækage: (1) Efterladt i en web-tilgængelig mappe eksponerer den den fulde klartekst af filen, der redigeres, plus serverens værtsnavn og brugernavn - et klassisk fund under penetrationstest. (2) Utilsigtet commit til git: «git rm --cached .*.swp» og tilføj «*.swp» til .gitignore. Tilføj «*.swp» til din globale .gitignore (~/.config/git/ignore) for at forhindre utilsigtede commits.
Formatdetaljer
kort fortalt- Windows Virtual Memory Swap File - Windows bruger pagefile.sys/swapfile.sys, ikke .swp-filendelsen; forveksling med OS-swap er ubegrundet, men almindelig.
- Oracle Forms .swp - Ældre Oracle Forms-versioner brugte .swp til en anden swap-buffer; meget sjælden.
Programmer der åbner SWP-filer
Tekniske detaljer
dyb specifikation| Filens formål | Gendannelsesbuffer til aktive Vim-redigeringssessioner; slettes automatisk ved korrekt afslutning |
| Magic bytes | `62 30 56 49 4D 20` («b0VIM ») ved offset 0 |
| Blokstruktur | Blok 0: 4 KB header; efterfølgende blokke: 1 KB sider i et B-træ; total størrelse vokser med bufferens indhold |
| Header-indhold | Vim-versionsstreng, original filsti, værtsnavn, brugernavn og PID gemt i blok 0 |
| Indholdskodning | Klartekst (ingen kryptering); originalt filindhold er direkte læsbart fra swap-filen |
| Byte-rækkefølge | Platformsafhængig (matcher værts-Vim-build; typisk little-endian på x86 og ARM) |
| Navngivningskonvention | `.filnavn.swp` (foranstillet punktum + `.swp`-suffiks); skjult på Unix-systemer som standard |
| Navngivning ved overløb | Når flere sessioner redigerer samme fil: `.swo`, `.swn`, `.swm`, … tildelt alfabetisk |
| Registrering af forældelse | Vim krydstjekker PID og værtsnavn i blok 0-headeren; advarer hvis den registrerede proces ikke længere kører |
| Gendannelseskommando | `vim -r filnavn` eller tryk på `r` ved gendannelsesprompten, når filen genåbnes i Vim |
| Neovim-kompatibilitet | Neovim læser og skriver Vim-kompatible swap-filer ved hjælp af det samme `b0VIM`-headerformat |
| Sikkerhedsbemærkning | Swap-filer i web-tilgængelige mapper eksponerer kildekode som klartekst, hvis serveren viser punktum-filer |
| Udgivet | 1991 (Vim 1.0); vi swap concept from 1970s ex/vi |
| Seneste version | Vim 9.1 (2024) swap format; compatible block-based format since Vim 6 |
| Specifikation | github.com |
SWP-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om SWP-filer.