web-dev-qa-db-ja.com

vimでファイルのエンコーディングを変更するにはどうすればよいですか?

私はvimを使用してファイルの行末を変更することに慣れています:

$ file file
file: ASCII text, with CRLF line terminators
$ vim file
:set ff=mac
:wq
$ file file
file: ASCII text, with CR line terminators

同様のプロセスを使用してファイルのUnicodeエンコーディングを変更することは可能ですか?私は次のことを試みていますが、うまくいきません:

$ file file.xml
file.xml: Unicode text, UTF-16, little-endian
$ vim file
:set encoding=utf-8
:wq
$ file file.xml
file.xml: Unicode text, UTF-16, little-endian

私は 誰かが言う を見ました。「fileencoding = utf-8を設定してから、ファイルを更新して書き込むと動作します」が、何かが足りないようです。彼が「それから更新する」ことの意味がわかりません。

223
skiphoppy

doc から:

:書き込み++ enc = utf-8 russian.txt

したがって、書き込みコマンドの一部としてエンコードを変更できるはずです。

239
Brian Agnew

違いがあることに注意してください

エンコードの設定

そして

set fileencoding

最初のケースでは、ターミナルに表示される出力エンコーディングを変更します。 2番目のケースでは、書き込まれるファイルの出力エンコーディングを変更します。

155
Johan

Vimを使用してそれを行うことは完全に可能ですが、なぜiconvを使用しないのですか?つまり、エンコード変換を行うためだけにテキストエディタを読み込むと、小さすぎる爪には大きすぎるハンマーを使用しているように見えます。

ただ:

iconv -f utf-16 -t utf-8 file.xml > file.utf8.xml

これで完了です。

77
user80168

手順と同様に、fileencodingの設定は機能するはずです。ただし、編集者がファイルをUTF8であると見なすために、「爆弾のセット」を1つ追加したいと思います。

$ vim file
:set bomb
:set fileencoding=utf-8
:wq
51
Francis

ファイルを読み取る前に、コマンドラインで encoding を変更すると便利な場合があります。

rem On Microsoft Windows
vim --cmd "set encoding=utf-8" file.ext
# In *nix Shell
vim --cmd 'set encoding=utf-8' file.ext

開始--cmd を参照してください。

4
Hans Ginzel