Vim нет конца строки на последней строке или eof
Я пытаюсь настроить vim, чтобы пропустить добавление eol в последней строке или eof, я пробовал это
:set binary
:set noeol
:w
что не является идеальной причиной двоичного переопределения типа файла для последующего использования.
любой другой вариант, чтобы установить это, мне не нужна новая строка на последней строке.
4 ответов
Я хотел добавить ответ, который, я думаю, может быть столь же полезным. Выбранный ответ всегда удалите EOL в файлах, даже если у них был один для начала. Это может быть поведение, которое вы хотите, это также может не быть. По-моему, я хочу сохранить EOL, как я первоначально открыл файл.
что я предлагаю-это небольшая модификация. Положи set binary
вверху . Таким образом, любые файлы будут открываться в двоичном режиме. Если у них нет EOL тогда ВИМ обнаружит это и оставит его NOEOL. Если у них есть EOL, то он распознает его как имеющий EOL и оставит его в покое.
если вы хотите новая файлы также не имеют EOL, тогда вы должны установить,
au BufNewFile * set noeol
команды для парня были бы, если бы вы всегда хочу NOEOL когда-нибудь. Единственное, что нужно знать, это то, что если у вас есть файл с пробелами внизу, то вы потеряете пробелы в конце. Это потому что происходит следующее,
- VIM читает файл и видит новую строку в конце и думает: "Хорошо, это файл с новой строкой (независимо от того, в двоичном режиме или нет).
- когда вы затем пишете файл, он выполняет autocmd,
- установить двоичный режим
- set noeol (это удаляет EOL, который VIM мысль заканчивает файл и удаляет его.
- файл сохраняется
у вас есть файл, в котором на один EOL меньше.
этот процесс будет повторяться до тех пор, пока EOL не исчезнут, и файл заканчивается одним символом. С моей настройкой, что происходит, файл открывается, и если VIM видит в меньше один EOL тогда он держит его внутренне. Если вы сохраните этот файл, независимо от того, что он там (вы можете проверить, введя set eol?
. В случае, если вы хотите избавиться от этого внутренне сохраненного EOL, вы просто говорите set noeol
а затем сохраните и бум, последний EOL удаляется.
Ого, я запыхался, набирая это.
Это еще лучше, я где-то нашел:
au BufWritePre * :set binary | set noeol
au BufWritePost * :set nobinary | set eol
из документации 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
.
Я придумал это:
" php remove eol from end of file
autocmd FileType php setlocal noeol binary fileformats="mac,unix,dos"
спасибо всем.
Ура.