Novas linhas do Eclipse e do Windows

182

Eu tive que mover meu espaço de trabalho do Eclipse do Linux para o Windows quando minha área de trabalho travou. Uma semana depois, copio-o de volta para o Linux, codifico com alegria, comprometo-me com o CVS. E, infelizmente, as novas linhas do Windows poluíram muitos arquivos, então o CVS diff despeja o arquivo inteiro, mesmo quando eu mudei uma linha ou duas!

Eu poderia preparar um script, mas estou imaginando se ele atrapalhará meus arquivos de projeto do Eclipse.

Vasu
fonte
1
Para converter finais de linha para poucos / todos os arquivos em um projeto com apenas alguns cliques: stackoverflow.com/a/7019737/1364747
Teddy #

Respostas:

358

Como mencionado aqui e aqui :

Defina a codificação de arquivo UTF-8e as terminações de linha para novos arquivos no Unix, para que os arquivos de texto sejam salvos em um formato não específico do sistema operacional Windows e mais facilmente compartilhado em áreas de trabalho de desenvolvedores heterogêneas:

  • Navegue para as preferências da área de trabalho (Geral: área de trabalho)
  • Altere a codificação do arquivo de texto para UTF-8
  • Altere o novo delimitador de linha de arquivo de texto para Outro e escolha Unix na lista de seleção

texto alternativo

  • Nota: para converter as terminações de linha de um arquivo existente, abra o arquivo no Eclipse e escolha File : Convert Line Delimiters to : Unix

Dica : Você pode converter facilmente o arquivo existente selecionando, em seguida, no Package Explorer e depois indo para a entrada do menuFile : Convert Line Delimiters to : Unix

VonC
fonte
2
Isso é exatamente o que eu estava procurando! Eu já havia mudado para novos arquivos, mas a opção de converter - errou meus olhos. Obrigado VonC!
Vasu
@ Vasu: de nada :). A visualização Estrutura de tópicos e o Package Explorer contêm alguns recursos para elementos multisselecionados que geralmente são ignorados.
VonC
Ótima redação. Procurar por mim mesmo através do diálogo de preferências horrivelmente labirínticas do Eclipse estava me deixando louco.
Cerin
39
Se você escolher um projeto inteiro no explorador de pacotes, poderá usar o File : Convert Line Delimiters to : Unixcomando para "corrigir" todos os arquivos no projeto de uma só vez.
Tal Weiss
11

Eu tinha os mesmos arquivos poluídos do eclipse, mesmo com uma alteração de linha. Solução: Configurações do git do Eclipse -> Incluir Entrada: Chave: core.autocrlf Valores: true

insira a descrição da imagem aqui

insira a descrição da imagem aqui

user988282
fonte
Embora essa seja uma solução boa para a maioria dos casos, ela pode morder você - por exemplo, quando você está calculando somas de verificação sobre arquivos de origem. Eles diferem de plataforma para plataforma.
zb226 6/04
8

Existe um útil utilitário bash - dos2unix- que é um conversor de formato de arquivo de texto DOS / MAC para UNIX, que, se ainda não estiver instalado na sua distribuição, poderá ser facilmente instalado através de um gerenciador de pacotes. Página de manual dos2unix

Ben Hayden
fonte
Eu estava planejando escrever um script para fazer recursivamente isso no meu espaço de trabalho do eclipse. A única preocupação era corromper qualquer arquivo de projeto interno do eclipse. Obrigado por sua sugestão!
Vasu
7

Além das soluções Eclipse e da ferramenta mencionada em outra resposta , considere virar . Ele pode "alternar" entre as quebras de linha normais e do Windows, e faz coisas boas, como preservar o carimbo de data e hora do arquivo e outras estatísticas.

Você pode usá-lo assim para resolver seu problema:

find . -type f -not -path './.git/*' -exec flip -u {} \;

(Eu incluí uma cláusula para ignorar o diretório .git, caso você use o git, mas como o flip ignora os arquivos binários por padrão, talvez você não precise disso.)

Michael Scheper
fonte
Apenas uma observação ... este comando é para usuários do Linux, não para usuários do Windows. O Windows findnão funciona dessa maneira.
Brad
@Brad está correto. No entanto, existe uma porta Cygwin de flip: github.com/jaalto/cygwin-package--flip
Michael Scheper
3

Você poderia tentar. O problema é que o Windows insere um retorno de carro e um avanço de linha quando recebe uma nova linha. Os sistemas Unix apenas inserem um avanço de linha. Portanto, o caractere extra de retorno de carro pode ser o motivo pelo qual o eclipse atrapalha as novas linhas.

Pegue um ou dois arquivos do seu projeto e converta-os. Você pode usar o Notepad ++ para fazer isso. Basta abrir o arquivo, vá em Formatar-> Converter em Unix (quando você estiver usando o Windows).

No Linux, tente isso em uma linha de comando:

sed 's/$'"/`echo \\\r`/" yourfile.java > output.java
Ham Vocke
fonte
Eu tenho cerca de 10k arquivos! Então tive que automatizá-lo de alguma forma. Obrigado pelo conselho!
Vasu
Algum erro erro de digitação no seu CLI: sed -i 's/$`echo \\\r`//' yourfile.javae automatizá-lofind . -name "*.java" -exec sed -i 's/$`echo \\\r`//' {} \;
PDEM
3

Para remover recursivamente os retornos de carro ( \r) dos arquivos CVS / * em todos os diretórios filhos, execute o seguinte em um shell unix:

find ./ -wholename "\*CVS/[RE]\*" -exec dos2unix -q -o {} \;
Gabe
fonte