14

2 つのテキスト ドキュメントがあるとします。

  1. 最初のファイルにはhi、テキストとして " " が含まれています。
  2. 2 番目のファイルにはhi、テキストとして " " が含まれています。

これら 2 つのファイルを gedit、vi、または vim で開くと、2 つのファイルはあらゆる点で視覚的に同一です。

ただし、xxdファイルを実行すると、次のようになります。

  1. 最初のファイルの 16 進数の内容は次のとおりです。6869
  2. 2 番目のファイルの 16 進数の内容は次のとおりです。6869 0a

あはは!目に見えない改行があります。vim では、ステータス バーに十分注意を払っていて、たまたまその[noeol]意味を理解していれば、これに気付くかもしれませんが、gedit では、2 つのファイルがまったく同じように開きます!

小規模な調査で、gedit または vim のみを使用して 2 つのファイルを区別するよう人々に依頼したところ、100% の確率で失敗しました。リーフパッドまたは emacs を使用して同じタスクを実行するように依頼したところ、100% 成功しました。

vi と gedit は、作成するすべてのファイルに改行を追加したいことを理解しています (これにはおそらく利点があることを認識しています)。私が理解できないのは、gedit と vim が、この改行をユーザーから視覚的に隠すことが有益であると考える理由です。特に、この種の行動が非常に破壊的である可能性がある場合...

(たとえば、vi/gedit テキスト エディターでこれら 2 つのファイルの内容を同じように見る 2 人の C プログラマーを考えてみましょう。そして、彼らが見たものと同じものを取得したと仮定して、内容を配列に書き込みchar greeting[2]ます。最初の最初のファイルを書いたプログラマーは、彼のコードは少しずさんですが、名声と富を手に入れることができますが、2 番目のファイルを書いた 2 番目のプログラマーは、悲惨な貧困の中で亡くなり、この目に見えない (そして防止可能な)スタック オーバーフローに混乱し、当惑します。)

では、vim や gedit などのテキスト エディターで、作成する各ドキュメントの最後に目に見えない改行を追加し、それらの改行をユーザーから隠して、これらのファイルの実際の内容が目に見えるだけになるようにすることの利点は何ですか。他のテキスト エディタを使用して検出可能ですか?

4

2 に答える 2

10

最後の行が「視覚的に隠されている」と感じるのは、反対の視点から来ています。

多くの人々 (特に Unix のバックグラウンドを持つ人) は、テキスト ファイルは常に改行で終わるべきだと主張し (たとえば、Why should text files end with a newline? を参照)、改行なしでファイルを作成できるテキスト エディターは根本的に壊れていると主張します。その観点からすると、Vim に追加の空行がないことは、この世界観と一致しているだけです。ファイルはcat、ターミナルに編集されたときと同じようにエディターに表示されます。

Vim の観点からは、改行のないファイルは異端で欠陥のあるファイルです。そのため、[noeol]ロード時にメッセージが表示されます (また、欠落している改行を維持しながらファイルを編集するのは非常に困難です。ただし、それを支援するためにPreserveNoEOL プラグインを作成しました)。

于 2013-10-08T06:50:21.137 に答える
1

これはviから引き継がれた規約だと思います。そうする利点の 1 つは、ファイルを連結するときに、各ファイルがどこで終了したかを区別できることです。

vim_useメーリングリストのこのスレッドで、さらにいくつかのコンテキストが提供されています

于 2013-10-08T06:19:38.653 に答える