☰ menu
Pavel Satrapa

Zotavení po pádu

Většina z vás tu situaci nepochybně zná. Pracujete na textu hodinu, dvě. A pak vám vypnou proud. Teprve v tom okamžiku si uvědomíte, jak dlouhá doba uplynula od jeho posledního uložení. Člověk v takové chvíli zpravidla vykřikuje slova, která zde nehodlám citovat. Pokud však používáte vim

Nepropadejte panice!

vim si totiž během vaší práce neustále udržuje tak zvaný pracovní soubor (swap file). Do něj si dělá poznámky o vaší činnosti. Na základě uložené podoby textu a tohoto pracovního souboru dokáže velmi dobře zrekonstruovat editaci, která skončila nekorektně (vypnuli proud, zhroutil se sytém a podobně). Utrpěné ztráty zpravidla nepřesáhnou jeden řádek.

Pracovní soubor

Jméno pracovního souboru se shoduje se jménem souboru editovaného, k němuž je připojena přípona .swp. V Unixu se navíc před jméno přidává tečka, aby nestrašil při výpisu seznamu souborů. Pokud má systém souborů omezenou délku jména (populární 8+3 v MS DOSu), budou dosavadní tečky ve jméně nahrazeny podtržítky a výsledek případně zkrácen a zjednoznačněn.

Pracovní soubor je založen automaticky při zahájení editace souboru a zrovna tak automaticky se po jejím úspěšném ukončení zlikviduje. Nemusíte se o něj vůbec starat, vim si vše zajistí sám.

Implicitně je vytvořen ve stejném adresáři, jako editovaný soubor. Nelíbí-li se vám takové chování, můžete adresář pro pracovní soubory nastavit pomocí :set directory=adresář.

Aktuální stav editace se do pracovního souboru zaznamená, když buď čtyři vteřiny nenapíšete žádný znak (lze nastavit volbou updatetime, zadejte hodnotu v milisekundách) nebo jste napsali 200 znaků (ovlivňuje volba updatecount).

Také si můžete kdykoli dupnout a uložit aktuální stav editovaného textu do pracovního souboru příkazem

:preserve

Jakmile jej provedete, nebude již původní soubor k případnému obnovení potřebný. Všechny informace si editor najde v pracovním souboru.

Obnovení

Při zahájení editace souboru si vim stanoví jméno odpovídajícího pracovního souboru a podívá se, zda náhodou neexistuje. Pokud jej najde, signalizuje to, že se stalo cosi nepatřičného. Proto vás upozorní hlášením

POZOR
Nalezen odkládací soubor se jménem ...

K takové situaci mohlo dojít v zásadě ze dvou důvodů:

  1. Jiný exemplář vim pracuje na tomtéž souboru. V takovém případě doporučuji nově spuštěný editor zase pěkně ukončit a úpravy realizovat v tom dříve běžícím.

  2. Žádný další exemplář neběží, ale minulá editace dopadla tvrdě a na záda.

Nás zajímá druhý případ, kdy je třeba provést resuscitaci souboru, jehož editace skončila zhroucením. vim rovnou nabízí možnosti, jak pokračovat. Můžete zahájit editaci, jako by se nic nestalo (E), otevřít soubor v režimu pouze ke čtení (O) nebo editor ukončit (Q). Nejužitečnější ale bývá nařídit, aby se vim pokusil obnovit stav před pádem (R).

Měli byste se ocitnout v editační seanci zhruba v takovém stavu, ve kterém byla nekorektně ukončena. Doporučuje se nyní soubor uložit pod jiným jménem a porovnat (například prostřednictvím příkazu :diffsplit) s původním textem. Budete-li spokojeni (já jsem pokaždé byl), smažte původní i pracovní soubor, zachráněnému dejte jeho původní jméno a pokračujte v editaci.

Špetka plamenů

Všimněte si, že vim dělá přesně to, co člověk potřebuje. Zcela nenápadně, aniž by o tom uživatel věděl a aniž by to znatelně zasahovalo do jeho práce, si dělá poznámky o tom, co se dělo. Ozve se jen v případě, že zjistí problém (existující pracovní soubor při zahájení editace).

Naproti tomu některé editory řeší stejný problém periodickým ukládáním textu, což ani zdaleka není totéž. Ukládají větší objem dat, což často vede k viditelnému zpoždění v činnosti editoru. Navíc pokud si po hodině práce usmyslíte, že jste vyrazili slepou uličkou a nejlepší bude vrátit se k původní verzi souboru, máte smůlu. Text byl mezitím několikrát uložen. Takovou situaci si necucám z palce, párkrát se mi to stalo.

Mimochodem – během mnoha let používání vim nepamatuji, že by se editor sám o sobě někdy zhroutil.