Não adicione nova linha no final de um arquivo

11

O Vim sempre adiciona uma nova linha no final dos meus arquivos ao salvar e está causando erros nos meus scripts PHP.

Como posso fazer com que o vim não adicione essa nova linha ao salvar?

Dan
fonte
7
"está causando erros nos meus scripts PHP" -> Isso é estranho? O PHP deve funcionar bem com uma nova linha à direita. De fato, isso é praticamente padrão. Talvez você tenha uma linha em branco após a ?>saída do PHP para o navegador (causando o erro "cabeçalhos já enviados")? Você não precisa de uma trilha ?>, e geralmente é recomendável deixá-la de fora para evitar exatamente esse problema.
Martin Tournoij
Eu acho que isso é enganoso. Nossos scripts interpretam qualquer saída como um erro.
Dan
11
Não. O Vim não está adicionando uma nova linha.
Romainl 28/05

Respostas:

11

Esta não é uma linha vazia completa, apenas uma nova linha final no final da última linha. As ferramentas Unix (como a herança do Vim) insistem em adicionar isso, enquanto o sistema operacional Windows não é tão rigoroso. Você pode ler mais sobre isso em Por que os arquivos devem terminar com uma nova linha?

Infelizmente, é bastante complexo impedir que o Vim escreva a nova linha final. Meu plugin PreserveNoEOL pode fazer isso. Para uma discussão sobre abordagens, consulte também Desativar nova linha automática do VIM no final do arquivo .

Ingo Karkat
fonte
Apenas observando para os futuros leitores que, embora essa resposta tenha sido excelente na época, nas versões mais recentes do Vim há uma solução muito mais simples em uma resposta postada posteriormente .
Ricos
11

Nas novas versões do Vim, finalmente há uma opção para isso

O Vim 7.4.785 adiciona a opção 'fixeol' que pode ser desativada para preservar automaticamente qualquer EOL ausente no final do arquivo.

(consulte a página da wiki: http://vim.wikia.com/wiki/Do_not_auto-add_a_newline_at_EOF )

No seu ~/.vimrcadicione esta linha:

set nofixeol

Reinicie vim, agora não deve adicionar a nova linha no final do arquivo.

(funciona apenas desde a versão vim 7.4.785)

DarthVanger
fonte
0

Você já tentou abrir o arquivo no modo binário? Tente vim -b file_name. Não deve adicionar a nova linha no final do arquivo.

Todos
fonte
Tentei fazer isso e, em seguida, usei xxdpara verificar, mas ele ainda adiciona um avanço de linha ( 0a) mesmo no modo binário.
James