vimの挿入モードで2つの異なるファイルの違いを見ることができないのはなぜですか?

vimの挿入モードで2つの異なるファイルの違いを見ることができないのはなぜですか?

2つのファイルを作成しましょう。

$ echo -n 'test' > test.txt
$ wc test.txt 
0 1 4 test.txt

ファイルにtest.txt末尾の改行が含まれていません。

$ echo 'test' > test_n.txt
$ wc test_n.txt 
1 1 5 test_n.txt

ファイルtest_n.txtには末尾の改行が含まれています。

上記の2つのファイルは明らかに異なりますが、2つのファイルのプレビューは次のvim場所にあります。挿入モード違いはありません。

$ vim test.txt

ここに画像の説明を入力してください。

$ vim test_n.txt

ここに画像の説明を入力してください。

なぜ違いはありません(新しい行または特別な違い)?

vimこのような追加の文字を追加または削除するにはどうすればよいですか?挿入モード

答え1

vimが一つあります。モデル 「廃止」(end of line) は、ファイルの最後の行が欠落しているかどうかを示します。新しいチーム特徴。 vim(またはviに似たプログラム)のすべてのモード設定は、次のように表示できます。

:set all

POSIX viこれに対する機能はありません。ファイルの長さがゼロまたは持つ末尾の改行文字。これは、POSIX viが改行で終わる行が定義されたテキストファイルのみを処理するためです。クイックチェックにより、nviとelvisにはこれにモードがないことがわかります。私の意見では、私はvimの詳細を忘れていました。邪悪なものとは異なり、 ":set list"は欠落している改行を簡単には表示しません。 vimで見た内容は次のとおりです。

ssss$
test$
~
~

悪い状態のとき:

ssss^J
test
~
~

両方のエディタのいずれかを使用してファイルを読み込んで変更できます。モデル、例えば、

:set noeol

更新されたファイルに改行文字をインポートするには、ファイルを作成してください。直接表示する代わりに、次の内容を変更できます。ステータスバーこの情報を表示するにはvimを使用してください。デフォルトではこれを実行していないようですが、一部のパッケージャはそれをカスタマイズしました。たとえば、次のようになります。

"foo" [noeol] 2L, 9C                                          1,1           All

以下を使用して提案されたコメントの1つ「?」~のset次のコマンド

:set eol?

次のように表示できます。

noendofline                                                   2,1           All

ただし、挿入モードでは次に置き換えられます。

-- INSERT --                                                  2,1           All

だからステータスバーこの情報を管理するのに適した場所のようです。

次の機能はしばらく使用されました。

  • これeolソースコードの説明によると、この機能はvim 2.4(1994年7月)で初めて登場しました。

  • 卑劣なnewlineパターンが表示されます1993年7月

nvi、エルビス、vim、vileすべてのハンドルバイナリPOSIX vi以外のファイルテキスト文書)。

関連情報