Nella sintassi s/foo/bar
, \r
e \n
hanno significati diversi, a seconda del contesto.
Corto:
Per foo
:
\ n = newline (LF su Linux / Mac, CR + LF su Windows)
\ r = ritorno a capo (CR)
Per bar
:
\ r = is newline
\ n = null byte.
Più a lungo (con numeri ASCII):
NUL
= 0x00 = 0 = Ctrl+ @
LF
= 0x0A = 10 = Ctrl+ J
CR
= 0x0D = 13 = Ctrl+M
Ecco un elenco dei caratteri di controllo ASCII . Inseriscili in Vim tramite Ctrl+ V, Ctrl+ ---key---.
In Bash o nelle altre shell Unix / Linux, basta digitare Ctrl+ ---key---.
Prova Ctrl+ Min Bash. È come colpire Enter, poiché la shell capisce cosa si intende, anche se i sistemi Linux usano feed di linea per la delimitazione di linee.
Per inserire valori letterali in bash, anche farli precedere con Ctrl+ Vfunzionerà.
Prova in Bash:
echo ^[[33;1mcolored.^[[0mnot colored.
Questo utilizza sequenze di escape ANSI . Inserire le due ^[
's via Ctrl+ V, Esc.
Si potrebbe anche provare Ctrl+ V, Ctrl+ M, Enter, che vi darà questa:
bash: $'\r': command not found
Ricordi \r
dall'alto? :>
Questo elenco di caratteri di controllo ASCII è diverso da una tabella di simboli ASCII completa , in quanto i caratteri di controllo, che sono inseriti in una console / pseudoterminal / Vim tramite la Ctrlchiave (haha), possono essere trovati lì.
Mentre in C e nella maggior parte delle altre lingue, di solito usi i codici ottali per rappresentare questi "caratteri".
Se vuoi davvero sapere da dove viene tutto questo: il TTY si è demistificato . Questo è il miglior collegamento che troverai su questo argomento, ma attenzione: ci sono draghi.
TL; DR
Di solito foo
= \n
e bar
= \r
.