Подтвердить что ты не робот

Vim нет конца строки на последней строке или eof

Я пытаюсь настроить vim, чтобы пропустить добавление eol на последней строке или eof, я пробовал это

:set binary
:set noeol
:w

который не является идеальной причиной двоичного переопределения типа файла для последующего использования.

Любая другая опция для этого, я не нуждаюсь в новой строке в последней строке.

4b9b3361

Ответ 1

Это еще лучше, я нашел где-то:

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

Ответ 2

Я хотел добавить ответ, который, по моему мнению, может быть полезен. Выбранный ответ всегда удаляет EOL на файлах, даже если у них есть один для начала. Это может быть поведение, которое вы хотите, оно также может и не быть. По-моему, я хочу сохранить EOL, поскольку я изначально открыл файл.

Я предлагаю небольшую модификацию. Поместите set binary вверху вашего файла .vimrc. Таким образом, любые файлы будут открываться в двоичном режиме. Если у них нет EOL, тогда vim обнаружит это и оставит его NOEOL. Если у них есть EOL, тогда он распознает его как EOL и оставьте его.

Если вы хотите, чтобы новые файлы также не имели EOL, вы должны установить

au BufNewFile * set noeol

Команды для chap будут, если вы всегда хотите NOEOL когда-либо. Единственное, о чем нужно знать, это то, что если у вас есть файл с пробелами внизу, вы потеряете пробелы в конце. Это происходит потому, что происходит следующее:

  • VIM читает файл и видит новую строку в конце и думает, что это файл с новой строкой (независимо от того, в бинарном режиме или нет).
  • Когда вы пишете файл, он запускает autocmd,
    • установить двоичный режим
    • set noeol (это удаляет EOL, который, как думал VIM, заканчивает файл и удаляет его.
    • файл сохраняется
  • Теперь у вас есть файл с одним EOL в нем.

Этот процесс будет повторяться до тех пор, пока EOL не исчезнет, ​​и файл закончится одним символом. С моей установкой, что происходит, файл открывается, и если VIM видит хотя бы один EOL, он сохраняет его внутри. Если вы сохраните этот файл, независимо от того, что он там (вы можете проверить, набрав set eol?. В случае, если вы хотите избавиться от встроенного EOL, вы просто скажете set noeol, а затем сохраните и BOOM, последний EOL удаляется.

WHOOO, я накручиваю это.

Ответ 3

Из документации 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.

Ответ 4

Я придумал это:

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

Спасибо всем.

Приветствия.