Na sintaxe s/foo/bar
, \r
e \n
têm significados diferentes, dependendo do contexto.
Baixo:
Para foo
:
\ n = nova linha (LF no Linux / Mac, CR + LF no Windows)
\ r = retorno de carro (CR)
Para bar
:
\ r = é nova linha
\ n = byte nulo.
Mais (com números ASCII):
NUL
= 0x00 = 0 = Ctrl+ @
LF
= 0x0A = 10 = Ctrl+ J
CR
= 0x0D = 13 = Ctrl+M
Aqui está uma lista dos caracteres de controle ASCII . Insira-os no Vim via Ctrl+ V, Ctrl+ ---key---.
No Bash ou nos outros shells Unix / Linux, digite Ctrl+---key--- .
Experimente Ctrl+ Mno Bash. É o mesmo que bater Enter, pois o shell percebe o que se entende, mesmo que os sistemas Linux usem feeds de linha para delimitar linhas.
Para inserir literais no bash, anexá-los com Ctrl+ Vtambém funcionará.
Experimente no Bash:
echo ^[[33;1mcolored.^[[0mnot colored.
Isso usa seqüências de escape ANSI . Insira os dois ^[
via Ctrl+ V,Esc .
Você também pode tentar Ctrl+ V, Ctrl+ M, Enterque lhe dará o seguinte:
bash: $'\r': command not found
Lembre o \r
de cima? :>
Essa lista de caracteres de controle ASCII é diferente de uma tabela de símbolos ASCII completa , pois os caracteres de controle inseridos em um console / pseudoterminal / Vim viaCtrl tecla (haha) podem ser encontrados lá.
Enquanto em C e na maioria dos outros idiomas, você geralmente usa os códigos octais para representar esses 'caracteres'.
Se você realmente quer saber de onde tudo isso vem: O TTY desmistificado . Este é o melhor link que você encontrará sobre esse tópico, mas cuidado: existem dragões.
TL; DR
Normalmente foo
= \n
e bar
= \r
.