web-dev-qa-db-ja.com

最後の行またはeofに行末がありません

最後の行またはeofへのeolの追加をスキップするようにvimをセットアップしようとしていますが、これを試しました

:set binary
:set noeol
:w

これは完全ではないため、後で使用するためにバイナリオーバーライドファイルタイプが発生します。

これを設定する他のオプションは、最後の行に改行は必要ありません。

26

これは私がどこかで見つけたさらに良いです:

au BufWritePre * :set binary | set noeol
au BufWritePost * :set nobinary | set eol
7

役に立つと思う答えを追加したかったのです。選択された回答常にファイルのEOLが最初からあったとしても、削除します。これはあなたが望む振る舞いかもしれませんが、そうでないかもしれません。私の意見では、最初にファイルを開いたときのEOLを保存したいと思います。

私が提案するのは、わずかな変更です。 set binaryファイルの先頭に.vimrcを置きます。このようにして、すべてのファイルがバイナリモードで開きます。 EOLがない場合、vimはこれを検出し、NOEOLのままにします。彼らがEOLを持っている場合、それはEOLを持っていると認識し、そのままにします。

newファイルにもEOLを含めないようにする場合は、次のように設定する必要があります。

au BufNewFile * set noeol

チャップのコマンドは、常にNOEOL everが必要な場合です。注意すべきことの1つは、下部にスペースがあるファイルがある場合、最後にスペースが失われることです。これは、次のことが起こるためです。

  1. VIMはファイルを読み取り、最後に改行を表示して、OK、これは改行のあるファイルであると考えます(バイナリモードであるかどうかに関係なく)。
  2. 次にファイルを書き込むと、autocmd、が実行されます。
    1. バイナリモードを設定する
    2. set noeol(これにより、VIMthoughtがファイルを終了していたEOLが削除され、ファイルが削除されます。
    3. ファイルが保存されます
  3. これで、EOLが1つ少ないファイルができました。

このプロセスは、EOLがなくなり、ファイルが1文字で終わるまで繰り返されます。私のセットアップでは、ファイルが開かれ、VIMleast1つのEOLが表示された場合、ファイルは保持されます。そのファイルを保存すると、そこに何があっても(set eol?と入力して確認できます。内部に保存されているEOLを削除したい場合は、set noeolと言ってから保存して[〜#〜]ブーム[〜#〜]、最後のEOLが削除されます。

うわー、私はこれをタイプするのに夢中です。

15
milkypostman

Vimのドキュメントから:

'binary' 'bin'      boolean (default off)
            local to buffer
            {not in Vi}
    This option should be set **before** editing a binary file.  You can also

したがって、vim -bまたは:e ++bin fileを使用するか、:e! ++binを使用してリロードする必要があります。

5
Benoit

私はこれを思いついた:

" php remove eol from end of file
autocmd FileType php setlocal noeol binary fileformats="mac,unix,dos"

皆さん、ありがとうございました。

乾杯。

1