備忘録

vim(vi)で文字コードを扱うについて色々調べてみた

2013年5月9日

Linuxでよくvim(vi)を使っていますが、この文字の文字コードってなんだったっけ?と調べたくなる場合があります。 たいていは秀丸を使って文字コードを調べますが、vimでやりたい場合もあります。 その場合、カーソルを合わせて 【ga】と入力すれば対象文字の16進数、8進数の文字コードを取得することができます。 16進数や8進数で表示された文字コードは【:set enc?】で表示されたエンコードの文字コードになります。 例)

#にカーソルを合わせ、【ga】と打つ
<#>  35,  16進数 23,  8進数 043

エンコードの確認は【:set enc?】、ファイルエンコードの確認は【:set fenc?】で確認できます。 エンコードとファイルエンコードが違う場合、文字化けが発生する場合があるので【:set fenc=文字コード】【:set enc=文字コード】で変更を行えばいいです。 例)

:set fenc=euc-jp
:set enc=shift_jis
他にもutf-8等もあります。

改行コードを違うものにしたい場合は【:set ff= 改行コードの種類】を指定すればいいです。(確認は【set ff?】で確認できます) 例)

:set ff=unix(LF)
:set ff=dos(CR+LF)
:set ff=mac(CR)

既存ファイルを開く場合、上記の場合だけじゃうまくいかない場合があります。 その場合、ファイルを読み直す必要が出てきます。 読み直す場合、【:set 】の変わりに【:e ++】を使えばOKです。但し、【:e ++fenc=】は使えないみたいです。 例)

:e ++enc=euc-jp
:e ++ff=unix


CentOSでは別途インストールする必要がありますが、nkfコマンドで文字コードを変更することができます。 [shell] yum install nkf<br />#文字コードを確認 nkf -g test.txt UTF-8 (LF)といった感じに表示されます #文字コードの変換 nkf -w --overwrite test.txt #test.txtがUTF-8に変換されます。 [/shell]





nkfの引数は以下の通りです。 -j : JISコード(ISO-2022-JP)に変換
-e : EUCコードに変換
-s : Shift-JISコードに変換
-w : UTF-8コードに変換(BOM無し)
-Lu : unix改行形式(LF)に変換
-Lw : windows改行形式(CRLF)に変換
-Lm : macintosh改行形式(CR)に変換
-g(--guess) : 自動判別の結果を表示
--overwrite : 引数のファイルに直接上書き 注意として、
nkf -w test.txt > test.txt
とするとtest.txtのデータがなくなるみたいです。
nkf -w test.txt > test2.txt
で別名保存するか
nkf -w --overwrite test.txt
ですることをお勧めします。
余談 秀丸で文字コードを調べる場合は
【その他】→【コマンド一覧】→【その他】→【文字コード表示】で文字コードを表示することができます。 文字コード、改行コードを変更して保存する場合は名前をつけて保存にあります。 文字コードを変更して再表示する場合は【ファイル】→【エンコードの種類】で変更できます。 私は【その他】→【キー割り当て】でF1ボタンに【文字コード表示】を割り当てています。

-備忘録
-, , , , , , , ,