En la sintaxis s/foo/bar
, \r
y \n
tienen diferentes significados, dependiendo del contexto.
Corto:
Para foo
:
\ n = nueva línea (LF en Linux / Mac, CR + LF en Windows)
\ r = retorno de carro (CR)
Para bar
:
\ r = es nueva línea
\ n = byte nulo.
Más largo (con números ASCII):
NUL
= 0x00 = 0 = Ctrl+ @
LF
= 0x0A = 10 = Ctrl+ J
CR
= 0x0D = 13 = Ctrl+M
Aquí hay una lista de los caracteres de control ASCII . Insértelos en Vim a través de Ctrl+ V, Ctrl+ ---key---.
En Bash u otros shells de Unix / Linux, simplemente escriba Ctrl+ ---key---.
Prueba Ctrl+ Men Bash. Es lo mismo que golpear Enter, ya que el shell se da cuenta de lo que significa, a pesar de que los sistemas Linux usan avances de línea para delimitar la línea.
Para insertar literales en bash, anteponerlos con Ctrl+ Vtambién funcionará.
Probar en Bash:
echo ^[[33;1mcolored.^[[0mnot colored.
Esto usa secuencias de escape ANSI . Inserte los dos ^[
'S a través Ctrl+ V, Esc.
También puede intentar Ctrl+ V, Ctrl+ M, Enterque será administrado por:
bash: $'\r': command not found
¿Recuerdas lo \r
de arriba? :>
Esta lista de caracteres de control ASCII es diferente de una tabla de símbolos ASCII completa , ya que los caracteres de control, que se insertan en una consola / pseudoterminal / Vim a través de la Ctrltecla (jaja), se pueden encontrar allí.
Mientras que en C y en la mayoría de los otros lenguajes, usualmente usas los códigos octales para representar estos 'caracteres'.
Si realmente quieres saber de dónde viene todo esto: el TTY desmitificado . Este es el mejor enlace que encontrará sobre este tema, pero tenga cuidado: habrá dragones.
TL; DR
Usualmente foo
= \n
, y bar
= \r
.