BOM 付きの UTF-16 ファイルがあります。fileencodings を次のように設定しました。
set fencs=ucs-bom,utf-16le,utf-8,default,latin1
ただし、1 行に 1 つの文字があるため、vim は UTF-16 を自動検出せず、デフォルトですべての^@
null マーカーを含む latin1 を使用します。vim にファイルを UCS ( :e ++enc=ucs-bom
) として読み取らせると、ファイルは正常に読み取られますが、「{nn} 行目で変換エラーが発生しました」というメッセージが表示されます。ただし、その 1 文字以外は、ファイルの残りの部分は正しく変換されています。不正な文字が削除されると、ファイルは正しく解釈され、表示されます。
vim に変換エラーを無視させる方法はありますか? 有効な BOM があるたびにエンコードを強制するのは少し面倒です。
答え1
変換エラーはデータが破損している (またはファイルの書き込み後に破損しつつある) ことを意味するため、それらを無視するためのグローバル設定はありません。あなたの場合、それは単なる 1 つの重要でない文字かもしれませんが、別の場合には、ファイル全体が暗黙的に使用できなくなる可能性があります。
変換エラーは、++bad=...
引数(参照:help ++bad
)を介して抑制することができます。これは:edit
、++enc=...
すべての変換エラーを抑制したい場合は、カスタム:EditBad
コマンドを記述する必要があります。
:command! -bar -bang -nargs=* -complete=file EditBad edit<bang> ++bad=? <args>