[[UTF8vimE| (English)]] [[OsamuAoki| Wiki links]] = UTF-8環境のvimで、非UTF-8エンコーディングのファイルを扱う方法 = vimをUTF-8環境で動かしていれば、内部ではありとあらゆる文字をテキストデーターとして扱えます。ただ、テキストデーターは必ずしもUTF-8では保存されていません。そこで非UTF-8エンコーディングのファイルを扱う際には、{{{iconv}}}でファイルのエンコーディングを往復で変換してやる必要があります。変換できるエンコーディングの選択肢は{{{iconv -l}}}コマンドをすると一覧できます。(エンコーディング名の処理は大文字・小文字区別ありませんが、ハイホン、アンダースコアは区別されます。)ただ、一々マニュアルで往復変換するのは面倒ですので、vimから簡単にエンコード変換にアクセスする方法を以下に記します。 ちなみにUTF-8環境下での標準的なvimは{{{fileencodings=ucs-bom,utf-8,default,latin1}}}という設定なので、読み込み時にはこの順にエラーなく読めるかが試されます。最後は自動的に{{{latin1}}}として読み込まれますが、エンコーディングが違うと当然文字化けします。その際には再読み込みをすることで正しく読めます。 == コマンドラインから非UTF-8エンコーディングのファイルを扱う方法 == * latain1 == isoO8859-1 は自動的に処理できる。 西欧(英仏独伊西葡蘭) * その他は{{{vim "+e ++enc=... filename"}}} 等で編集開始。 * {{{vim "+e ++enc=cp932 filename"}}} 日本(Windows3.1J、SHIFT_JIS) * {{{vim "+e ++enc=eucjp filename"}}} 日本(Unix) * {{{vim "+e ++enc=iso-2002-jp filename"}}} 日本(電子メール) * {{{vim "+e ++enc=latin2 filename"}}} ポーランド語 (latin2 == iso08859-2) * {{{vim "+e ++enc=koi8-r filename"}}} ロシア語 * {{{vim "+e ++enc=big5 filename"}}} 中国語(zh_TW, 繁体用) * {{{vim "+e ++enc=gb2312 filename"}}} 中国語(zh_CN, 簡体用) * {{{vim "+e ++enc=euckr filename"}}} 韓国語(Unix) * 読み込んだファイルが文字化けした場合には、{{{[Esc]}}}を押して{{{:e ++enc=newencoding}}} で再読み込み。 * 元のエンコーディングで書き込む際に、通常どおり{{{[Esc]}}}を押して{{{:w}}} とすれば元のファイル名で保存。 * UTF-8エンコーディングにして書き込む際には、{{{[Esc]}}}を押して{{{:w ++enc=utf-8 newfilename.txt}}} とすれば新ファイル名で保存。 == GUIメニューを介して非UTF-8エンコーディングのファイルを扱う方法 == gvimへメニューを追加し、て非UTF-8エンコーディングに対応するには、以下に示すようなスクリプトを {{{~/.vimrc}}}に追加します。各自必要なエンコーディングにあわせて適当にこれはカスタマイズしてください。 ここで、再読み込みでは{{{Reload with ++enc...}}}、エンコード変換しての保存は{{{Save with ++enc...}}}をファイルメニューから選択してください。 {{{ " " Menu: Access to old encodings and conversion " Translated By: Osamu AOKI " Last Change: 30-Dec-2006. if has('iconv') " Check iconv version let support_jisx0213 = (iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb") ? 1 : 0 " an 10.328.100.100 &File.&Reload\ with\ ++enc\.\.\..&SJISfenc=cp932 :e ++enc=cp932 if !support_jisx0213 an 10.328.100.110 &File.&Reload\ with\ ++enc\.\.\..EUC&JPfenc=euc-jp :e ++enc=euc-jp an 10.328.100.120 &File.&Reload\ with\ ++enc\.\.\..J&ISfenc=iso-2022-jp :e ++enc=iso-2022-jp else an 10.328.100.110 &File.&Reload\ with\ ++enc\.\.\..EUC&JPfenc=euc-jisx0213 :e ++enc=euc-jisx0213 an 10.328.100.120 &File.&Reload\ with\ ++enc\.\.\..J&ISfenc=iso-2022-jp-3 :e ++enc=iso-2022-jp-3 endif an 10.328.100.130 &File.&Reload\ with\ ++enc\.\.\..EUC&KRfenc=euckr :e ++enc=euckr an 10.328.100.140 &File.&Reload\ with\ ++enc\.\.\..&GB2312(zh_CN)fenc=gb2312 :e ++enc=gb an 10.328.100.150 &File.&Reload\ with\ ++enc\.\.\..&BIG5(zh_TW)fenc=big5 :e ++enc=big5 an 10.328.100.200 &File.&Reload\ with\ ++enc\.\.\..-SEPRELOAD1- an 10.328.100.201 &File.&Reload\ with\ ++enc\.\.\..latin&1fenc=latin1 :e ++enc=latin1 an 10.328.100.202 &File.&Reload\ with\ ++enc\.\.\..latin&2fenc=latin2 :e ++enc=latin2 an 10.328.100.203 &File.&Reload\ with\ ++enc\.\.\..latin&3fenc=latin3 :e ++enc=latin3 an 10.328.100.204 &File.&Reload\ with\ ++enc\.\.\..latin&4fenc=latin4 :e ++enc=latin4 an 10.328.100.205 &File.&Reload\ with\ ++enc\.\.\..latin&5fenc=latin5 :e ++enc=latin5 an 10.328.100.206 &File.&Reload\ with\ ++enc\.\.\..latin&6fenc=latin6 :e ++enc=latin6 an 10.328.100.207 &File.&Reload\ with\ ++enc\.\.\..latin&7fenc=latin7 :e ++enc=latin7 an 10.328.100.208 &File.&Reload\ with\ ++enc\.\.\..latin&8fenc=latin8 :e ++enc=latin8 an 10.328.100.209 &File.&Reload\ with\ ++enc\.\.\..latin&9fenc=latin9 :e ++enc=latin9 an 10.328.100.210 &File.&Reload\ with\ ++enc\.\.\..latin1&0fenc=latin10 :e ++enc=latin10 an 10.328.100.800 &File.&Reload\ with\ ++enc\.\.\..-SEPRELOAD2- an 10.328.100.900 &File.&Reload\ with\ ++enc\.\.\..&UTF-8fenc=utf-8 :e ++enc=utf-8 " Save with ++enc as ... an 10.360.120.100 &File.&Save\ with\ ++enc\.\.\..&SJISfenc=cp932 :browse confirm saveas ++enc=cp932 if !support_jisx0213 an 10.360.120.110 &File.&Save\ with\ ++enc\.\.\..EUC&JPfenc=euc-jp :browse confirm saveas ++enc=euc-jp an 10.360.120.120 &File.&Save\ with\ ++enc\.\.\..J&ISfenc=iso-2022-jp :browse confirm saveas ++enc=iso-2022-jp else an 10.360.120.110 &File.&Save\ with\ ++enc\.\.\..EUC&JPfenc=euc-jisx0213 :browse confirm saveas ++enc=euc-jisx0213 an 10.360.120.120 &File.&Save\ with\ ++enc\.\.\..J&ISfenc=iso-2022-jp-3 :browse confirm saveas ++enc=iso-2022-jp-3 endif an 10.360.120.130 &File.&Save\ with\ ++enc\.\.\..EUC&KRfenc=euckr :browse confirm saveas ++enc=euck an 10.360.120.140 &File.&Save\ with\ ++enc\.\.\..&GB(zh_CN)fenc=gb :browse confirm saveas ++enc=gb an 10.360.120.150 &File.&Save\ with\ ++enc\.\.\..&BIG5(zh_TW)fenc=big5 :browse confirm saveas ++enc=big5 an 10.360.120.200 &File.&Save\ with\ ++enc\.\.\..-SEPSAVE1- an 10.360.120.201 &File.&Save\ with\ ++enc\.\.\..latin&1fenc=latin1 :browse confirm saveas ++enc=latin1 an 10.360.120.202 &File.&Save\ with\ ++enc\.\.\..latin&2fenc=latin2 :browse confirm saveas ++enc=latin2 an 10.360.120.203 &File.&Save\ with\ ++enc\.\.\..latin&3fenc=latin3 :browse confirm saveas ++enc=latin3 an 10.360.120.204 &File.&Save\ with\ ++enc\.\.\..latin&4fenc=latin4 :browse confirm saveas ++enc=latin4 an 10.360.120.205 &File.&Save\ with\ ++enc\.\.\..latin&5fenc=latin5 :browse confirm saveas ++enc=latin5 an 10.360.120.206 &File.&Save\ with\ ++enc\.\.\..latin&6fenc=latin6 :browse confirm saveas ++enc=latin6 an 10.360.120.207 &File.&Save\ with\ ++enc\.\.\..latin&7fenc=latin7 :browse confirm saveas ++enc=latin7 an 10.360.120.208 &File.&Save\ with\ ++enc\.\.\..latin&8fenc=latin8 :browse confirm saveas ++enc=latin8 an 10.360.120.209 &File.&Save\ with\ ++enc\.\.\..latin&9fenc=latin9 :browse confirm saveas ++enc=latin9 an 10.360.120.210 &File.&Save\ with\ ++enc\.\.\..latin1&0fenc=latin10 :browse confirm saveas ++enc=latin10 an 10.360.120.800 &File.&Save\ with\ ++enc\.\.\..-SEPSAVE2- an 10.360.120.900 &File.&Save\ with\ ++enc\.\.\..&UTF-8fenc=utf-8 :browse confirm saveas ++enc=utf-8 endif " filler to avoid the line above being recognized as a modeline " filler " filler " filler }}} == キーボードにない文字の入力 == [[JapaneseEnvironmentE| (English)]] [[JapaneseEnvironment| (日本語)]] を例として参照。