ファイルの読み込み時にvimで変換エラーを無視する

ファイルの読み込み時にvimで変換エラーを無視する

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>

関連情報