13

メモ帳でテキストファイルを開くと、テキストを含む最後の行の終わりに改行がある場合、空白行が表示されます。ただし、Vimではこの空白行は表示されません。私が気付いたもう1つのことは、Vimエディターがデフォルトで最後の行にキャリッジリターンを追加することです(表示されていなくても)。Vimで作成したメモ帳でファイルを開くと、ファイルの最後に空白行が表示されるため、わかります。

とにかく、私はこれら2つの違いに耐えることができますが、この動作を切り替えることができるオプションがVimにあるかどうか疑問に思っています。

ありがとう

PS-GVim 7.2

[アップデート]

これは、代わりにサーバー障害が発生した場合に意味がありますか?

【アップデート2】

言い換えると、1行のファイルの最後にキャリッジリターンがあるかどうかを知る必要があります(メモ帳にはテキストのない余分な行が表示されますが、Vimではわかりません)。これは、テキストファイルを読み取り(1行を期待しますが、キャリッジリターンがあります)、何らかの目的でテキストを解析するProgressプログラムが原因です。キャリッジリターンがない場合、Progressはその行をnullとして扱います。

[回避策] キャリッジリターンがあることを確認する1つの方法(ただし、2番目のリターンを追加しないことを確認してください)は、行末書き込みオプションがオンになっていることを確認することです(:set eol)。次に、書き込み/保存を実行します。これにより、ファイルがまだ存在しない場合は、ファイルに行末が挿入されます。それ以外の場合は、新しいものは追加されません。

4

4 に答える 4

6
:help endofline

vim が余分な改行を追加するのを止める方法を説明します。

于 2009-07-29T15:09:37.383 に答える
3

vimは改行を行末記号として扱い、メモ帳は改行を行区切り文字として扱うようです:http: //en.wikipedia.org/wiki/Newlineから

改行が終了するのか、行を区切るのかについても混乱があります。改行が区切り文字と見なされる場合、ファイルの最後の行の後に改行はありません。ほとんどのシステムでの一般的な規則は、最後の行の後に改行を追加することです。つまり、改行を行末記号として扱います。一部のプログラムでは、ファイルが改行で終了していない場合、ファイルの最後の行の処理に問題があります。逆に、改行が区切り文字として使用されることを期待するプログラムは、最後の改行を新しい(空の)行の開始として解釈します。これにより、ファイルに対して異なる行数が報告される可能性がありますが、それ以外の場合は通常は無害です。

正しく思い出せば、UNIXシステムでは、テキストファイルを改行で終了する必要があります。

于 2009-07-30T10:52:27.813 に答える
2

Vim の便利なオプションの 1 つに、

set list

これは、すべての行末文字 (およびおそらく他の一般的に見えない文字) を確認するのに役立ちます。したがって、メモ帳だけでなく、Vim でもこの最後のエンドオフラインを直接表示できます。

于 2009-07-29T15:40:17.837 に答える
1

VIM でファイルを開くと、ステータス行[noeol]にファイル名の後に表示されます。それは一つの兆候です。Manniが言ったように、オプションをオフとオンの両方に設定することで、これを変更できendoflineますbinary。これをファイルのデフォルト設定として設定でき.vimrcます。

于 2009-07-29T18:44:22.293 に答える