Retorno de carro versus nova linha no vim

5

No vim, quando abri um arquivo, queria adicionar duas linhas vazias no final de cada linha atual. Eu usei a seguinte opção:

%s/$/\n\n/

Aparentemente, isso não funciona, mas o que funciona é:

%s/$/\r\r/

Eu pensei que é um recurso do Windows? Alguém seria capaz de explicar um pouco mais.

    
por sandyp 19.09.2013 / 23:26

2 respostas

2

De documentos do vim sobre padrões :

\r matches <CR>

\n matches an end-of-line - When matching in a string instead of buffer text a literal newline character is matched.

Fonte: link

    
por 19.09.2013 / 23:33
1

Como @MartinvonWittich declarou que você deseja usar \r . Você também pode usar a combinação de teclado:

Ctrl + v + M que normalmente é exibido como ^M quando digitado.

%s/$/^M^M/

Veja algumas informações adicionais úteis sobre vim em relação a pesquisar e substituir:

Ao pesquisar:

  • . , * , \, [ , ] , ^ e $ são metacaracteres.
  • + , ? , |, { , } , ( e ) devem ter escape para usar sua função especial.
  • \/ é / (use barra invertida + barra para procurar barra)
  • \t é a guia, \s é espaço em branco
  • \n é nova linha, \r é CR (retorno de carro = Ctrl-M = ^ M)
  • \{#\} é usado para repetição. /foo.\{2\} irá corresponder foo e os dois caracteres seguintes. O \ não é necessário no fechamento} então /foo.\{2} fará a mesma coisa.
  • \(foo\) faz referência a foo. Parênteses sem escapes são literalmente combinados. Aqui, o \ é necessário para o fechamento de \ ).

Ao substituir:

  • \r é nova linha, \n é um byte nulo (0x00).
  • \& é o "e" comercial (& é o texto que corresponde ao padrão de pesquisa).
  • insere o texto da primeira referência anterior. insere a segunda referência anterior e assim por diante.

Referências

por 19.09.2013 / 23:40

Tags