Então, eu trabalho em uma loja de PHP, e todos nós usamos editores diferentes, e todos temos que trabalhar no Windows. Eu uso o vim, e todos na loja ficam reclamando que sempre que eu edito um arquivo, há uma nova linha na parte inferior. Eu procurei e descobri que esse é um comportamento documentado do vi & vim ... mas eu queria saber se havia alguma maneira de desativar esse recurso. (Seria melhor se eu pudesse desativá-lo para extensões de arquivo específicas).
Se alguém souber disso, seria ótimo!
?>
tag de fechamento, apenas por esse motivo.Respostas:
E para o
vim
7.4+ você pode usar (de preferência no seu .vimrc) (obrigado a 罗泽轩 pelas últimas notícias!):Agora, em relação às versões mais antigas do
vim
.Mesmo se o arquivo já tiver sido salvo com novas linhas no final:
vim -b file
e uma vez no vim:feito.
Como alternativa, você pode abrir arquivos no vim com
:e ++bin file
Ainda outra alternativa:
fonte
set binary
eset noeol
em seu .vimrcbinary
substituiçõesexpandtab
, o que o levará a obter guias literais em sua fonte.set nofixendofline
para resolver o problema no Vim 7.4+Adicione o seguinte comando ao seu .vimrc para desativar a opção de final de linha:
No entanto , o próprio PHP ignorará o último final de linha - não deve ser um problema. Estou quase certo de que, no seu caso, há outra coisa que está adicionando o último caractere de nova linha, ou possivelmente existe uma confusão com os tipos de final de linha do Windows / Unix (
\n
ou\r\n
etc).Atualizar:
Uma solução alternativa pode ser apenas adicionar esta linha ao seu .vimrc:
fonte
Existe outra maneira de abordar isso se você estiver usando o Git para controle de origem. Inspirado por uma resposta aqui , escrevi meu próprio filtro para uso em atributos de git arquivo .
Para instalar este filtro, salve-o como
noeol_filter
em algum lugar no seu$PATH
, torne-o executável e execute os seguintes comandos:Para começar a usar o filtro apenas para você, coloque a seguinte linha no seu
$GIT_DIR/info/attributes
:Isso garantirá que você não confirme nenhuma nova linha no eof em um
.php
arquivo, independentemente do que o Vim faça.E agora, o próprio script:
fonte
Eu não tentei essa opção, mas as seguintes informações são fornecidas no sistema de ajuda do vim (ou seja, help eol):
Você também pode estar interessado na resposta a uma pergunta anterior: " Por que os arquivos devem terminar com uma nova linha "?
fonte
Adicionei uma dica no wiki do Vim para um problema semelhante (embora diferente):
http://vim.wikia.com/wiki/Do_not_auto-add_a_newline_at_EOF
fonte
fixeol
opção que pode ser desativada para preservar automaticamente qualquer EOL ausente no final do arquivo. Esse script se torna desnecessário para o Vim 7.4.785 e posterior. ” (Fonte: a mesma página da wiki.) Obrigado, eu não estava ciente dessa nova opção.noeol
enofixeol
alcançar o resultado desejável.OK, você estar no Windows complica as coisas;)
Como a opção 'binary' redefine a opção 'fileformat' (e escrever com o conjunto 'binary' sempre escreve com terminações de linha unix), vamos pegar o grande martelo e fazê-lo externamente!
Que tal definir um comando automático (: comando automático de ajuda) para o evento BufWritePost? Esse comando automático é executado depois de cada vez que você escreve um buffer inteiro. Neste comando automático, chame uma pequena ferramenta externa (php, perl ou qualquer outro script) que retire a última nova linha do arquivo recém-escrito.
Portanto, isso seria algo parecido com isto e entraria no seu arquivo .vimrc:
Certifique-se de ler toda a documentação do vim sobre comandos automáticos, se esta é a primeira vez que você lida com comandos automáticos. Existem algumas advertências, por exemplo, é recomendável remover todos os autocmds do seu .vimrc, caso o seu .vimrc possa ser originado várias vezes.
fonte
silent
. Por exemplosilent !your-script <afile>
.Eu implementei as sugestões do Blixtor com o pós-processamento do Perl e Python, executando dentro do Vim (se for compilado com esse suporte de linguagem) ou por meio de um script externo do Perl. Está disponível como o plugin PreserveNoEOL no vim.org.
fonte
let g:PreserveNoEOL = 1
no meu.vimrc
arquivo! Tive que aprender vimscript para descobrir isso na descrição do plugin! : D:help PreserveNoEOL-usage
teria dito a você também. RTFM :-)INSTALLATION
eCONFIGURATION
. Nem sequer notar aUSAGE
seção na descrição, porque é acima da instalação :)Talvez você possa ver por que eles estão reclamando. Se um arquivo php tiver uma nova linha após o final?>, O php o exibirá como parte da página. Isso não é um problema, a menos que você tente enviar cabeçalhos após a inclusão do arquivo.
No entanto, o?> No final de um arquivo php é opcional. Sem final?>, Não há problema com uma nova linha no final do arquivo.
fonte
Eu adiciono .vimrc
e ajuda, tente
fonte
Acho que encontrei uma solução melhor do que a resposta aceita. As soluções alternativas não estavam funcionando para mim e eu não queria ter que trabalhar no modo binário o tempo todo. Felizmente, isso parece fazer o trabalho e ainda não encontrei efeitos colaterais desagradáveis: preserve o final de linha ausente no final dos arquivos de texto . Acabei de adicionar a coisa toda ao meu ~ / .vimrc.
fonte
Seria possível usar um comando especial para salvar esses arquivos?
Se você fizer: set binary,: w e: set nobinary, o arquivo será gravado sem nova linha, se não houver nenhum.
Essa sequência de comandos pode ser colocada em um comando definido pelo usuário ou em um mapeamento, é claro.
fonte
A partir da
vim
v7.4, você pode usarHá algumas informações sobre essa alteração aqui: http://ftp.vim.org/vim/patches/7.4/7.4.785 .
fonte
Achei que este plugin vimscript é útil para esta situação.
Ou leia mais no github
fonte