gVim mostrando retorno de carro (^ M), mesmo quando o modo de arquivo é explicitamente DOS
-
18-09-2019 - |
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?
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
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