V minulém příspěvku jsem zmínil problém s detekcí kódování ve VIMu, který mě tížil. Zkoušel jsem hledat řešení, ale z těch opravdu funkčních jsem našel jen dvě. Prvním řešením byl plugin MultiEnc, který byl ovšem sloučen s druhým řešením - pluginem FencView, takže nakonec jsem vlastně měl řešení pouze jedno. Tento plugin uměl částečně to, co jsem potřeboval, ale byl především určen pro asijské jazyky a obsahoval funkce, které jsem nepotřeboval. Takže jsem se rozhodl, že si napíšu vlastní plugin. S jeho první verzí bych vás chtěl nyní seznámit.
AutoFenc - automatické zjišťování kódování souboru
Tento plugin umožňuje automaticky zjistit (lépe řečeno se "pokusit zjistit") kódování, v jakém je soubor uložen a otevřít soubor v tomto kódování. Zatím podporuje následující metody detekce kódování:
- pomocí BOM (byte-order-mark) na začátku souboru (pouze některá vícebajtová kódování)
- v souborech založených na HTML pomocí tagu
<meta>
, ve kterém je ekvivalent HTTP hlavičky Content-Type, který obsahuje informaci o kódování souboru - v souborech založených na XML pomocí deklarace
<?xml ... ?>
- v CSS souborech pomocí pravidla
@chardet
- podle obsahu komentáře, ve kterém je kódování specifikováno (např.
// Encoding: iso-8859-2
v C++ či# -*- coding: iso-8859-2 -*-
v Pythonu), poměrně volný formát specifikace - pomocí externího programu (standardně je použit program enca, který je výborný v tom, že u něj lze nastavit jazyk, ve kterém bývají soubory napsány, např. čeština - tento program mně pak byl schopen rozeznat kódování cp1250 od latin2, což běžně programy neumí; lze ale použít i libovolný jiný program)
Případné další informace naleznete v popisu pluginu (anglicky).
Závěr
Plugin si můžete stáhnout a vyzkoušet zde. Zatím se jedná o pre-release verze 1.0. Mám v plánu ho zveřejnit v databázi pluginů pro VIM, ale nejdříve provedu pár testů a opravím případné chyby. Pokud v pluginu naleznete chybu, či by se vám v něm líbila nějaká dodatečná možnost detekce kódování, tak mně určitě dejte vědět. Také budu rád za každý názor a připomínku k tomuto pluginu (je to můj první plugin a s VIMem dělám něco přes týden, tak na to prosím berte ohled :)).
Osobně jsem s ním spokojen, protože zatím u všech dokumentů, které jsem zkoušel, (titulky k filmům, projekty, věci do školy atd.) to kódování detekovalo správně, což jsem potřeboval.
EDIT: Plugin jsem umístil do databáze pluginů pro VIM. Pokud jej používáte, všem doporučuji upgrade na verzi z této databáze (oproti pre1.0 bylo provedeno několik úprav).