ファイルの最後に新しい行を追加しないでください


10

保存するとき、Vimは常にファイルの最後に新しい行を追加します。これにより、PHPスクリプトでエラーが発生します。

保存時にこの新しい行を追加しないようにするにはどうすればよいですか?


7
「PHPスクリプトでエラーが発生しています」 ->これはおかしいですか?PHPは、末尾の改行で正常に動作するはずです。実際、これはかなり標準的です。おそらく、?>PHPがブラウザーに出力する後に空白行がある(「ヘッダーはすでに送信されました」というエラーが発生する)?末尾のは必要ありません。?>通常、この問題を回避するために、空白を省略することをお勧めします。
Martin Tournoij、2015年

それは誤解を招くと思います。スクリプトは出力をエラーとして解釈します。
Dan


1
いいえ。Vimは新しい行を追加していません。
romainl 2015年

回答:


11

これは完全な空の行ではなく、最後の行の最後の最後の改行です。Unixツール(Vimの遺産のような)はそれを追加するよう主張しますが、Windowsオペレーティングシステムはそれほど厳密ではありません。詳細については、「ファイルの最後に改行が必要なのなぜですか?」を参照してください。

残念ながら、Vimが最後の改行を書くのを防ぐのは非常に複雑です。私のPreserveNoEOLプラグインはこれを行うことができます。アプローチの説明については、「VIMでファイルの終わりで自動改行を無効にする」も参照してください。


将来の読者のために、この回答は当時素晴らしいものでしたが、Vimの最近のバージョンでは、後で投稿された回答に非常に簡単な解決策があることを指摘しておきます。
リッチ

10

Vimの新しいバージョンでは、ついにこれのためのオプションがあります

Vim 7.4.785は 'fixeol'オプションを追加します。これを無効にすると、ファイルの最後に欠落しているEOLが自動的に保持されます。

(wikiページを参照:http : //vim.wikia.com/wiki/Do_not_auto-add_a_newline_at_EOF

あなたの~/.vimrc追加この行:

set nofixeol

vim起動します。ファイルの最後に改行が追加されなくなりました。

(vimバージョン7.4.785以降でのみ機能)


0

バイナリモードでファイルを開こうとしましたか?お試しくださいvim -b file_name。ファイルの最後に新しい行を追加しないでください。


これを試し、を使用xxdして確認しましたが0a、バイナリモードでも改行()が追加されます。
James
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.