Portál AbcLinuxu, 10. května 2025 11:57

Dotaz: Kódování češtiny v konzoli (Ubuntu) a vim

16.5.2009 18:09 Josef
Kódování češtiny v konzoli (Ubuntu) a vim
Přečteno: 3353×
Odpovědět | Admin

Na počítači s Ubuntu je v konsoli defaultně nastavená čeština UTF-8. Já ale potřebuji psát texty v ISO-8859-2. Používám Vim. Zkoušel jsem věci jako upravit .vimrc (fenc a fileencoding), ale vim mi nedovolí uložení: E513 write error, conversion failed (make 'fenc' empty to override).

Zkoušel jsem i nastavit dpkg-reconfigure console-setup na ISO-8859-2, což mi jen totálně rozhodí a znemožní práci v konzole a velmi nesnadno se vrací zpátky.

Nepomohla ani změna  v /etc/default/console-setup CHARMAP="ISO-8859-2".

Na fóru zde - číslo 216229 (http://www.abclinuxu.cz/poradna/linux/show/216229) píše Lukimanicka něco o parametru jádra vt.default_utf8, ale nevím, jak se s tím zachází či kam to mám nacpat.

Neboli: Je mi jedno, co kde bude nastaveno, potřebuji jen psát a ukládat v konzole ve vimu v ISO Latin2 a pokud možno správně zobrazovat mc a podobné věci. Nepotřebuji rady typu "tak to piš v terminálu v X".

Dík za radu, fakt mi došly všechny nápady. Na druhém počítači na Debianu mi to jde v ISO, tady na notebook mi ale Debian nedokázal obsloužit některé HW součásti, tak jsem musel nasadit Ubunt, který mi jinak taky vyhovuje.

Pohoda, hezký den

Josef

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

Odpovědi

pek avatar 16.5.2009 22:58 pek | skóre: 20
Rozbalit Rozbalit vše Re: Kódování češtiny v konzoli (Ubuntu) a vim
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dobrý den,

zkuste nechat konzoli v utf8 a spustit: vim -c "e ++enc=iso-8859-2" soubor-iso.txt Soubor se při načtení překóduje do utf8 a čeština se zobrazuje správně. Při uložení :w se soubor uloží jako iso. Ve stavovém řádku vimu by se měl objevit nápis [zkonvertován]. Vyzkoušeno na ubuntu 9.04.

Parametry fenc a fileencoding ve .vimrc by měly dělat něco podobného..., ale mě osobně to nikdy nefungovalo tak jak bych potřeboval.

Petr
Slackware
17.5.2009 12:04 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Kódování češtiny v konzoli (Ubuntu) a vim
S ohledem na to, že mi funkce fileencodings (fencs) a fileencoding (fenc) přišla z manuálu jasnější, používám takovéto nastavení:
set fileencodings=""
set fileencoding=""

" If we have a BOM, always honour that rather than trying to guess.
if &fileencodings !~? "ucs-bom"
  set fileencodings^=ucs-bom
endif

" Always check for UTF-8 when trying to determine encodings.
if &fileencodings !~? "utf-8"
  set fileencodings+=utf-8
endif

" fce pro zjištění kódování pomocí externího programu (enca)
function GetEncoding(f)
  let e = system('enca -Pe "' . a:f . '"')
  let e = substitute(e, '/.*', '', '')
  if e =~ 'unknown'
    return 'ascii'
  endif
  return e
endfunc

" zjištění kódování
if has("autocmd")
  au BufReadPre * exec "set fencs+=" . GetEncoding(expand('<afile>'))
endif

" a nebo když ji miluješ, není co řešit
if has("autocmd")
  "au BufReadPre *.tex  set fencs=iso-8859-2
  "au BufNewFile *.tex  set fenc =iso-8859-2
  au BufReadPre *.gnu  set fencs=iso-8859-2
  au BufNewFile *.gnu  set fenc =iso-8859-2
  au BufReadPre *.plot set fencs=iso-8859-2
  au BufNewFile *.plot set fenc =iso-8859-2
fi
++enc podle mne v zásadě dělá něco jako to co je výše v bloku "když ji miluješ", tedy překóduje buffer z ++enc-definovaného kódování do ve-vimu/vimrc-nastaveného-interního-"encoding"-kódování a nastaví fenc na hodnotu danou ++enc aby se to při ukládání opět rekódilo.
18.5.2009 19:23 Josef
Rozbalit Rozbalit vše Re: Kódování češtiny v konzoli (Ubuntu) a vim

Dík,

geniální a fungující -- dokud ovšem nepotřebuji napsat ň. Tam se vim zarputile brání uložení chybou 513 (vizte výše). Než na něco přijdu, obcházím to zatím TeXovským \v n, což ovšem není příliš čisté a budu zkoušet další možnosti. Nepomohl ani pokus na výměnu fontu.

Josef

16.5.2009 23:44 Jirka | skóre: 36
Rozbalit Rozbalit vše Re: Kódování češtiny v konzoli (Ubuntu) a vim
Odpovědět | | Sbalit | Link | Blokovat | Admin
Máte na mysli textový terminál, nebo emulátor terminálu v X (Konsole, Gnome Terminál, ...)?

Ty bohatější emulátory (Konsole, Gnome Terminál) umí v aktuální session měnit kódování. Pokud tam máte X (na notebooku asi ano), tak bych šel touto cestou. V Gnome je to v menu Terminal - Set Character Encoding. Konsole v novém KDE to má v nastavení profilu, ve starém KDE se to dalo nastavit rychleji v kontextové nabídce.
16.5.2009 23:46 Jirka | skóre: 36
Rozbalit Rozbalit vše Re: Kódování češtiny v konzoli (Ubuntu) a vim
Omlouvám se. Teď jsem si to četl znova a zjistil jsem, že o mou radu nestojíte. :-)
16.5.2009 23:58 Jirka | skóre: 36
Rozbalit Rozbalit vše Re: Kódování češtiny v konzoli (Ubuntu) a vim
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak jsem si to přečetl znova a pokud si to dobře pamatuji, tak by to mělo být nějak takto.

Zkuste zkonfigurovat locales:

dpkg-reconfigure locales a vyberete i cs_CZ.ISO-8859-2

Pak, pokud to chcete globálně pro celý systém (jinak do .bash_profile svého uživatele), v /etc/environment přidáte export těchto proměnných do prostředí:
export LC_MESSAGES=C
export LANG=cs_CZ.ISO-8859-2
Musíte se odhlásit a znovu přihlásit.
18.5.2009 19:44 Josef
Rozbalit Rozbalit vše Re: Kódování češtiny v konzoli (Ubuntu) a vim

Tak jsem zkusil dpkg-reconfigure locales, ale nedalo se to tam nikde doplnit, jen proběhl nějaký skript a na konci každého řádku bylo UTF-8... up-to-date. Jak se tam dá nacpat to ISO? Co myslíte tím "vyberte i cs_CZ.ISO..."

Nejde to nějak takto: Otevři soubor tenaten a napiš tam toato?

Josef

18.5.2009 20:13 Jirka | skóre: 36
Rozbalit Rozbalit vše Re: Kódování češtiny v konzoli (Ubuntu) a vim
Ano. Locales, které chcete vygenerovat musíte (na nový řádek) uvést v souboru /var/lib/locales/supported.d/local a pak spustit dpkg-reconfigure locales. Jak jsem říkal, jsou to už roky, co jsem něco takového potřeboval.
18.5.2009 20:55 Josef
Rozbalit Rozbalit vše Re: Kódování češtiny v konzoli (Ubuntu) a vim

Díky převeliké, Jiří

to je přednně ono! To pomohlo a mohu psát ďťň, zobrazuje a ukládá se to dobře. Ostatní programy ukazují taky správně, co mají.

Jen doplním, že po úpravě souboru,...local a spuštění  dpkg-reconfigure locales

je potřeba pustit dpkg-reconfigure console-setup a nastavit tam latin2 (to pro takové nedouky jako jsem já nebo kdybych za čas potřeboval stejnou věc podruhé:)). 

Tímto slavnostně prohlašuji problém za vyřešený:)

Pohoda, hezký den

Josef

 

16.5.2009 23:59 couker
Rozbalit Rozbalit vše Re: Kódování češtiny v konzoli (Ubuntu) a vim
Odpovědět | | Sbalit | Link | Blokovat | Admin

ja jsem si pridal do .vimrc tohle

18 function! ChangeFileencoding()
 19     let encodings = ['iso88592', 'utf8', 'cp1250']
 20     let prompt_encs = []
 21     let index = 0
 22     while index < len(encodings)
 23         call add(prompt_encs, index.'. '.encodings[index])
 24         let index = index + 1
 25     endwhile
 26     let choice = inputlist(prompt_encs)
 27     if choice >= 0 && choice < len(encodings)
 28         execute 'e ++enc='.encodings[choice].' %:p'
 29     endif
 30 endf
 31 nmap <F8> :call ChangeFileencoding()<CR>
 

ted kdyz otevru soubor,zmacknu f8, tak mi to da na vyber co chci za kodovani..nake si zvolim a datlim v nem..

Založit nové vláknoNahoru

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

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