AutoFenc - plugin pro detekci kódování ve VIMu

Od Petr Zemek, 2009-07-11

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).

Tagy
Obsah tohoto pole je soukromý a nebude veřejně zobrazen.

Filtrované HTML (využíváno)

  • Povolené HTML značky: <a href hreflang> <em> <strong> <cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <table>
  • Zvýraznění syntaxe kódu lze povolit přes následující značky: <code>, <blockcode>, <bash>, <c>, <cpp>, <haskell>, <html>, <java>, <javascript>, <latex>, <perl>, <php>, <python>, <ruby>, <rust>, <sql>, <text>, <vim>, <xml>, <yaml>.
  • Řádky a odstavce se zalomí automaticky.
  • Webové a e-mailové adresy jsou automaticky převedeny na odkazy.
CAPTCHA
10 + 2 =
Vyřešte tento jednoduchý matematický příklad a vložte výsledek. Např. pro 1+3 vložte 4.
Nějak se mi tady rozmohl spam, takže poprosím o ověření.