Che cos'è il formato di file SWP?
.swp è un file di swap di Vim - un file binario temporaneo che Vim crea automaticamente quando si apre un file per la modifica. Il suo scopo è il ripristino in caso di crash: se Vim si chiude inaspettatamente a causa di un'interruzione di corrente, della chiusura del terminale o di un arresto anomalo del sistema, il file di swap preserva le modifiche non salvate che possono essere recuperate al lancio successivo.
Vim crea il file di swap nella stessa directory del file modificato, nominandolo con un punto iniziale e il suffisso .swp - ad esempio, la modifica di config.py produce .config.py.swp. Sui sistemi Unix-like il punto iniziale lo rende nascosto per impostazione predefinita. Se più sessioni di Vim modificano lo stesso file, i file di swap successivi utilizzano .swo, .swn e così via.
Il file di swap ha una struttura binaria basata su blocchi. Il primo blocco da 4 KB (blocco 0) contiene un header magico b0VIM , la stringa della versione di Vim, il percorso del file originale, l'hostname, il nome utente e l'ID del processo (PID). I blocchi successivi memorizzano il contenuto del buffer organizzato come un B-tree di pagine da 1 KB. I contenuti del file sono memorizzati in testo semplice - il file di swap non è crittografato.
Quando Vim apre un file e rileva un .swp esistente, chiede di ripristinare (r) le modifiche non salvate o eliminare (d) il file obsoleto. Un file .swp residuo senza alcun processo Vim in esecuzione può essere eliminato in sicurezza; esegui vim -r nomefile per tentare esplicitamente il ripristino. Neovim utilizza lo stesso formato di swap.
Una considerazione sulla sicurezza: i file .swp lasciati nelle directory del server web possono esporre il codice sorgente non crittografato se il server è configurato per servire file nascosti.
Sicurezza e incolumità
RISCHIO: MEDIUMIl file .swp in sé non è un malware, ma comporta un rischio di divulgazione di informazioni: (1) Se lasciato in una directory accessibile via web, espone l'intero testo in chiaro del file in fase di modifica, oltre all'hostname del server e al nome utente - un classico reperto di ricognizione nei penetration test. (2) Se inviato accidentalmente a git: usa «git rm --cached .*.swp» e aggiungi «*.swp» a .gitignore. Aggiungi «*.swp» al tuo .gitignore globale (~/.config/git/ignore) per prevenire commit accidentali.
Dettagli del formato
in sintesi- File di swap della memoria virtuale di Windows - Windows utilizza pagefile.sys/swapfile.sys, non l'estensione .swp; la confusione con lo swap del sistema operativo è infondata ma comune.
- Oracle Forms .swp - Le versioni precedenti di Oracle Forms utilizzavano .swp per un buffer di swap differente; caso molto raro.
Programmi che aprono file SWP
Dettagli tecnici
specifiche approfondite| Scopo del file | Buffer di ripristino per sessioni di editing attive in Vim; eliminato automaticamente alla chiusura corretta |
| Magic bytes | `62 30 56 49 4D 20` («b0VIM ») all'offset 0 |
| Struttura a blocchi | Blocco 0: header da 4 KB; blocchi successivi: pagine da 1 KB in un B-tree; la dimensione totale cresce con il contenuto del buffer |
| Contenuto dell'header | Stringa della versione di Vim, percorso del file originale, hostname, nome utente e PID memorizzati nel blocco 0 |
| Codifica del contenuto | Testo semplice (nessuna crittografia); il contenuto del file originale è leggibile direttamente dal file di swap |
| Ordine dei byte | Dipendente dalla piattaforma (corrisponde alla build di Vim ospite; tipicamente little-endian su x86 e ARM) |
| Convenzione di denominazione | `.nomefile.swp` (punto iniziale + suffisso `.swp`); nascosto sui sistemi Unix per impostazione predefinita |
| Nomi in caso di overflow | Quando più sessioni modificano lo stesso file: `.swo`, `.swn`, `.swm`, … assegnati in ordine alfabetico |
| Rilevamento file obsoleti | Vim incrocia PID e hostname nell'header del blocco 0; avvisa se il processo registrato non è più in esecuzione |
| Comando di ripristino | `vim -r nomefile` o premere `r` al prompt di ripristino quando si riapre il file in Vim |
| Compatibilità Neovim | Neovim legge e scrive file di swap compatibili con Vim utilizzando lo stesso formato header `b0VIM` |
| Nota sulla sicurezza | I file di swap nelle directory accessibili via web espongono il codice sorgente come testo semplice se il server serve i file che iniziano con un punto |
| Rilasciato | 1991 (Vim 1.0); vi swap concept from 1970s ex/vi |
| Ultima versione | Vim 9.1 (2024) swap format; compatible block-based format since Vim 6 |
| Specifica | github.com |
Conversioni SWP
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file SWP.