Portál AbcLinuxu, 30. dubna 2024 04:21

VIM a UTF-8

14.6.2006 14:14 | Přečteno: 5063× | Externí paměť | poslední úprava: 14.6.2006 14:21

Dlouho jsem se UTF-8 dokázal na svém domácím počítači vyhýbat, ale nakonec to potkalo i mne a po instalaci WordPressu jsem zjistil, že se bez možnosti editovat UTF-8 soubory neobejdu. Jak na to bez přeinstalace systému do UTF-8?

Vim naštěstí pro podobné nešťastníky jako jsem já poskytuje podporu. Jak editovat soubory v UTF-8 v terminálu ISO-8859-2 snadno a rychle.

Pokud je VIM zkompilováno s možností multibyte, umí interně pracovat s daty v UTF-8.

Úprava konfigurace

Do ~/.vimrc je potřeba přidat některé z následujících řádků

set encoding=utf-8
říkáme, že interně se má se soubory pracovat v UTF-8. Vim tedy bude schopné pracovat s dlouhými znaky
set termencoding=iso8859-2
upozorníme VIM, že terminál, na kterém se zobrazují data pracuje v iso-8859-2, klávesy a zobrazované řetězce se tedy budou převádět z a do patřičného kódování.
set fileencodings=ucs-bom,utf-8,latin2
Povolíme VIMu magii. Při otevírání souboru postupně zkouší, jestli soubor není v patřičném kódování. Podle uhodnutého kódování pak nastaví fileencoding. Při načítání a ukládání souboru se provádí konverze mezi fileencoding a encoding (pokud se liší).

Otevírání a ukládání souborů

Pokud VIM dokáže uhodnout (díky nastavení fileencodings), ve kterém kódování je soubor, je všechno v pořádku. Rychlá kontrola se dá provést :set fileencoding. Pokud VIM neuhodne kódování, můžeme použít :e ++enc=cp1250 newfile a :w ++enc=utf-8 newfile

PS: A až to budu hledat, tak to tady najdu...

       

Hodnocení: 94 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

elviin avatar 14.6.2006 16:34 elviin | skóre: 29 | blog: elviin | Plzeň-Praha
Rozbalit Rozbalit vše Re: VIM a UTF-8
Odpovědět | Sbalit | Link | Blokovat | Admin
Ja jsem pouzival (Yetiho?) encu.
function GetEncoding(f)
  let e = system('enca -Pe "' . a:f . '"')
  let e = substitute(e, '/.*', '', '')
  if e =~ 'unknown'
    return 'iso-8859-2'
  endif
  return e
endfunc
au BufReadPre * exec "set fencs=" . GetEncoding(expand('<afile>'))

set fileencodings=iso-8859-2,cp1250,utf-8,latin1
14.6.2006 17:18 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
Rozbalit Rozbalit vše Re: VIM a UTF-8
Jo napsal ji Yeti. :-)
kyknos avatar 14.6.2006 18:26 kyknos | skóre: 18 | blog: Quid novi? | Ranša Rosa
Rozbalit Rozbalit vše Re: VIM a UTF-8
Odpovědět | Sbalit | Link | Blokovat | Admin
Nechapu, jak dnes muze nekdo pouzivat 8bitova kodovani. Nejhorsi jsou tragedi, co edituji v 8bitovem kodovani utf soubory z cvs/svn, a pak je tam commitnou. V GNOME (nejen) na to narazim pomerne casto. To bych vrazdil.
So the Nationalists and the Socialists have the same policy on Brexit. They should get together and form a...
belisarivs avatar 15.6.2006 16:23 belisarivs | skóre: 22 | blog: Psychobláboly
Rozbalit Rozbalit vše Re: VIM a UTF-8
A jake kodovani by jsi doporucil? iso8859? A proc? Jenom me to zajima.
IRC is just multiplayer notepad.
15.6.2006 17:09 VícNežNic | skóre: 42 | blog: Spáleniště | Ne dost daleko
Rozbalit Rozbalit vše Re: VIM a UTF-8
Tedy nevím, ale iso 8859 je přesně to, co si představím, když se řekne 8 bitové kódování :-)
Copak toho není dost?
kyknos avatar 15.6.2006 18:09 kyknos | skóre: 18 | blog: Quid novi? | Ranša Rosa
Rozbalit Rozbalit vše Re: VIM a UTF-8
UTF8 samozrejme
So the Nationalists and the Socialists have the same policy on Brexit. They should get together and form a...
Věroš avatar 15.6.2006 21:53 Věroš | skóre: 24 | blog: Co není v hlavě | 49.29 s.š., 16.54. v.d.
Rozbalit Rozbalit vše Re: VIM a UTF-8
To je jednoduché, servery pod mojí správou se instalovaly ještě v době, když podpora UTF-8 byla (v konzoli) v plenkách a notebook se snažím mít nainstalovaný co nejvíce podobně serverům. A tak není divu, že ještě jedu v iso8859-2.

Nový služební notebook jsem už v UTF-8 provozoval, ale můj starý notebook ještě pořád jede v iso8859.

Ale jednou... ho přeinstaluju.
Školím Ansible

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.