gVim mostrando retorno de carro (^ M), mesmo quando o modo de arquivo é explicitamente DOS

StackOverflow https://stackoverflow.com/questions/799417

Pergunta

Eu estou usando gVim no Windows. Os meus mostra o código ^M caracteres no final das linhas. Eu costumava :set ff=dos sem sucesso. Os personagens ^M permanecer por linhas existentes, mas não aparecem para novas linhas que entram. Eu tenho mudado modos para mac (mostra ^J caracteres) e UNIX (também mostra ^M caracteres) e volta para DOS. Alguém já viu isso?

Foi útil?

Solução

Isso acontece quando você tem uma mistura de final de linha do Windows e os Unix. Se você tem 100 linhas, 99 são \ r \ n e um é \ n, você verá 99 ^ M caracteres. A correção é achar que uma linha e substituí-lo. Ou executar dos2unix no arquivo. Você pode substituir os finais de linha do Windows com:

:%s/\r\(\n\)/\1/g

Outras dicas

Você também pode executar:

:e ++ff=dos

Para remover o ^M:. Veja formato de arquivo - Vim Dicas Wiki

Eu costumo usar o seguinte para limpar meus finais de linha:

:g/^M$/s///

Para obter o ctrl-M I normalmente digitar ctrl-Q, em seguida, ctrl-M e coloca-o em. (Em alguns ambientes, pode ser ctrl-V, em seguida, ctrl-M.) Eu não sei por que, mas Acho que um mais fácil de lembrar do que rq 's.

Não se esqueça de fazer :set ff=dos bem, ou você vai acabar economizando com fins de linha UNIX ainda.

Eu sei que isso já foi respondida, mas um uso truque que é

:%s/\r/\r/g

Este substitui os retornos de carro UNIX com o CRLF janelas. Apenas acrescentou no caso de alguém questões mais tinha.

Você pode ignorar esses caracteres!

colocar isso em seu vimrc

jogo Ignorar / \ r $ /

Na verdade o que funcionou para mim (no Windows de 64 bits, gVim: 7,2) foi:

:set ffs=dos

não apenas: ff

Running Vim 7.3 no Windows 7. Eu usei o seguinte comando:

:%s/^M/\r/g

Para criar a ^ M eu digitei CTRL + Q, em seguida, CTRL + M.

Este é provavelmente um bocado simples para muitos de vocês, mas no off chance que é útil.

Com base na resposta das richq, achei estes para ser útil no meu vimrc. Note, o segundo é comentada normalmente porque faz dd um pouco confuso desde Vim irá esperar por um outro acidente vascular cerebral chave para descobrir se ele é o comando mapeado ex.

function! D2u()
    execute '%s/\r\(\n\)/\1/g'
endfunction
"map d2u :%s/\r\(\n\)/\1/g

O primeiro é dirigido por call D2u() digitação em ex e o segundo pressionando D2u no modo de edição.

Estes são finais de linha CR extras geralmente por causa de um usando um arquivo em sistemas UNIX / DOS mistos.

Possível a resposta mais curta para remover um único ^ M a partir do final de cada linha, e o que eu uso, é:

:%s/\r

o que equivale a:

:%s/\r//

mas as barras finais não são necessários (eles são assumidos).

tentei um monte de coisas, mas o seguinte trabalhou

:%s/\r/\r/g

Nota: use g se você quiser que o efeito sobre todo o arquivo

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top