Conversão EOL no notepad ++

113

Por alguma razão, quando eu abro arquivos de um servidor unix em minha máquina Windows, eles ocasionalmente têm conversão EOL do Macintosh, e quando eu edito / salvo novamente eles não funcionam corretamente no servidor unix. Eu só uso o notepad ++ para editar arquivos deste servidor unix, então há uma maneira de criar uma macro que converte automaticamente o EOL para o formato Unix sempre que eu abro um arquivo?

Jeff
fonte
possível duplicata de Change EOL em vários arquivos de uma só vez
Navid EMAD
1
Seu problema pode ser com qualquer programa de FTP que você está usando. Por exemplo, eu uso o WinSCP para remotamente em um servidor Unix, Notepad ++ é definido como meu editor padrão, mas eu tive que ir para as configurações do WinSCP e definir o modo de transferência Binarypara manter as terminações de linha preservadas. Portanto, você pode reconfigurar seu programa FTP / SCP / etc para transferir os arquivos de uma maneira diferente.
Slicktrick de

Respostas:

200

Essa funcionalidade já está incorporada ao Notepad ++. No menu "Editar", selecione "Conversão EOL" -> "Formato UNIX / OSX".

captura de tela da opção para uma localização ainda mais rápida (ou versões em diferentes idiomas)

Você também pode definir o EOL padrão no notepad ++ através de "Configurações" -> "Preferências" -> "Novo Documento / Diretório Padrão" e selecione "Unix / OSX" na caixa Formato.

Nate Allen
fonte
7
Eu sei sobre a conversão no menu de edição, e as configurações que você mencionou são apenas para novos documentos. Quero fazer a conversão automaticamente para cada arquivo que eu abrir (ou para cada arquivo que eu salvar)
Jeff
O problema é quando eu abro um arquivo Unix existente, a "Conversão EOL" -> Formato UNIX / OSX fica acinzentada. O Notepad ++ é muito frustrante para usar com arquivos UNIX, então eu uso o Notetab Lite, que me permite salvar todos os arquivos como UNIX, não apenas os novos.
Off The Gold em
3
@OffTheGold A opção UNIX EOL está esmaecida porque é a seleção atual.
blakeoft
Pode apostar. Obrigado a partir de novembro de 2017 via Google.
SDsolar
Isso não está funcionando para mim. Eu continuo selecionando "Conversão EOL -> Unix", mas não faz nada. Volto ao menu e vejo que Windows está a opção esmaecida (selecionada, portanto?), Então clico em Unix novamente. Eu até tentei selecionar todo o meu texto primeiro, caso ele só funcione na seleção, então selecionei Unix novamente. Mesmo assim, não faz nada.
Loduwijk de
16

No Notepad ++, use substituir tudo por expressão regular. Isso tem vantagem sobre o comando de conversão no menu, pois você pode operar em uma pasta inteira sem ter que abrir cada arquivo ou arrastar e soltar (em várias centenas de arquivos ele se tornará visivelmente mais lento) e você também pode definir o filtro curinga do nome do arquivo.

(\r?\n)|(\r\n?)

para

\n

Isso corresponderá a todos os padrões de finalização de linha possíveis (único \ r, \ n ou \ r \ n) de volta para \ n. (Ou \ r \ n se você estiver convertendo para o estilo Windows)

Para operar em vários arquivos:

  • Use "Substituir tudo em todos os documentos abertos" na guia "Substituir". Você terá que arrastar e soltar todos os arquivos no Notepad ++ primeiro. É bom que você tenha controle sobre em qual arquivo operar, mas pode ser lento se houver várias centenas ou milhares de arquivos.
  • "Substituir nos arquivos" na guia "Localizar nos arquivos", pelo filtro de arquivo de sua escolha, por exemplo, * .cpp * .cs em um diretório especificado.
Wappenull
fonte
Isso pode causar perda de EOLs devido à substituição de um \ r \ n \ r \ n por um único \ n. Eu acho que.
Sunspawn de
Confirme que funcionou no Notepad ++ 6.9.1. Ele pesquisará para frente, portanto, não substituirá recursivamente aqueles que estão atrás.
Wappenull
Em resposta a: "Isso pode causar perda de EOLs devido à substituição de um \ r \ n \ r \ n por um único \ n" >> Não irá, pois usa | (ou) operador entre 2 grupos possíveis.
Wappenull
3

Eu abro arquivos "diretamente" do WinSCP que abre os arquivos no Notepad ++. Eu tinha um arquivo php no meu servidor Linux que sempre abria no formato Mac independentemente do que eu fizesse :-(

Se eu baixei o arquivo e o abri no local (Windows), ele foi aberto como DOS / Windows .... hmmm

A solução foi converter o arquivo local para o "Formato UNIX / OSX" no EOL, salvá-lo e fazer o upload.

Agora, quando abro o arquivo diretamente do servidor, ele é aberto como "Dos / Windows" :-)

MrCalvin
fonte
1

Dependendo do seu projeto, você pode querer considerar o uso do EditorConfig ( https://editorconfig.org/ ). Existe um plugin Notepad ++ que carregará um .editorconfig onde você pode especificar "lf" como o final obrigatório da linha.

Eu só comecei a usá-lo, mas é bom até agora, e os projetos de código aberto em que trabalhei incluíram arquivos .editorconfig por anos. A configuração "Conversão EOL" não foi alterada, por isso pode ser um pouco confuso, mas se você "Exibir> Mostrar símbolo> Mostrar fim de linha", poderá ver que está adicionando LF em vez de CRLF, mesmo quando "Conversão EOL "e o canto inferior inferior mostra outra coisa (por exemplo, Windows (CR LF)).

D. Cook
fonte