27

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

:set binary
:set noeol
:w

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

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

4

4 に答える 4

17

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

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

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

au BufNewFile * set noeol

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

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

このプロセスは、EOLがなくなり、ファイルが1文字で終了するまで繰り返されます。私のセットアップでは、ファイルが開かれ、VIMが少なくとも1つのEOLを検出すると、それを内部に保持します。そのファイルを保存すると、そこに何があっても(入力して確認できますset eol?。内部に保存されているEOLを削除したい場合は、「BOOMset noeol 」と言って保存すると、最後のEOLが削除されます。

WHOOO、私はこれをタイプするのにうんざりしています。

于 2011-01-08T02:05:20.090 に答える
7

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

au BufWritePre * :set binary | set noeol
au BufWritePost * :set nobinary | set eol
于 2010-11-11T09:06:38.663 に答える
5

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

于 2010-11-09T12:17:10.653 に答える
1

私はこれを思いついた:

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

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

乾杯。

于 2010-11-09T15:31:57.503 に答える