0

ルビーファイルで:

p __ENCODING__

#<Encoding:US-ASCII>

ヴィムで:

set encoding?
encoding=utf-8

これは私に悲しみを引き起こしています(http://stackoverflow.com/questions/14495486/ruby-syntax-error-with-multiple-language-in-hash)、パッチが適用されていますが、ファイルが次のように表示される理由はまだわかりませんruby で ASCII、vim で utf-8。

4

1 に答える 1

2

@melpomene がコメントしたように、:set encodingVim が内部的に使用するエンコーディングを示します。

:set fileencodingは、Vim がドキュメントに使用することを決定したエンコーディングを教えてくれます。可能な値はfileencodingsオプションによって与えられます。ASCII は、通常、リストされている他のエンコーディングによって透過的に処理されるため、デフォルト リストには含まれていません。

しかし、あなたの質問のその部分は私を困惑させています:

しかし、ファイルがASCIIである理由はまだわかりません

そのファイルがインタープリターによって ASCII として扱われることを積極的に望んでいるように見えるからです。

とにかく、このエンコーディング ディレクティブは Ruby だけが使用します。ファイルが実際にASCII としてエンコードされていることや、Vim がそれを気にして特別な方法で処理する必要があることを意味するわけではありません。

つまり、ファイルが実際に ASCII でエンコードされているかどうかに関係なく、Vim は気にしません。

それで…あなたは正確に何が欲しいのですか?fileencodingおそらくASCIIファイルを開くと、そのvimはそのオプションをASCIIに設定しますか?おそらくASCIIファイルを別のエンコーディングに変換しますか?

編集

  1. そのディレクティブを使用して、ファイルの内容を ASCII として扱う必要があることを Ruby に明示的に伝えると、Ruby は「OK、あなたがそう言うなら ASCII です」と言います。

  2. このディレクティブは、ファイルの実際のエンコーディングに何も変更しません。utf-8、latin1、または何でもかまいません。

  3. Vim はそのディレクティブを理解していません。

  4. :h encodingVim は、そのファイルに使用するエンコーディングを、:h fileencodingおよびで読む必要がある多くの規則に従って選択します:h fileencodings

  5. Vim は ASCII を特別な "ASCII" の方法で処理するのではなく、utf-8 のサブセットをそのまま処理するだけです。

したがって、先に進む前に、次のことを確認してください。

  • 次のようなファイルのエンコーディング$ file /path/to/file

  • fileencodingVimはそのファイルに:set fileencoding

于 2013-01-24T20:23:19.433 に答える