Dans la syntaxe s/foo/bar
, \r
et \n
ont des significations différentes, selon le contexte.
Court:
Pour foo
:
\ n = nouvelle ligne (LF sur Linux / Mac, CR + LF sur Windows)
\ r = retour chariot (CR)
Pour bar
:
\ r = est une nouvelle ligne
\ n = octet nul.
Plus long (avec des nombres ASCII):
NUL
= 0x00 = 0 = Ctrl+ @
LF
= 0x0A = 10 = Ctrl+ J
CR
= 0x0D = 13 = Ctrl+M
Voici une liste des caractères de contrôle ASCII . Insérez-les dans Vim via Ctrl+ V, Ctrl+ ---key---.
Dans Bash ou les autres shells Unix / Linux, tapez simplement Ctrl+ ---key---.
Essayez Ctrl+ Mdans Bash. C'est la même chose que frapper Enter, car le shell réalise ce que l'on veut dire, même si les systèmes Linux utilisent des sauts de ligne pour délimiter les lignes.
Pour insérer des littéraux dans bash, les ajouter avec Ctrl+ Vfonctionnera également.
Essayez dans Bash:
echo ^[[33;1mcolored.^[[0mnot colored.
Cela utilise des séquences d'échappement ANSI . Insérer les deux ^[
« s via Ctrl+ V, Esc.
Vous pouvez également essayer Ctrl+ V, Ctrl+ M, Enterqui vous donnera ceci:
bash: $'\r': command not found
Rappelez-vous \r
d'en haut? :>
Cette liste de caractères de contrôle ASCII est différente d'une table de symboles ASCII complète , en ce que les caractères de contrôle, qui sont insérés dans une console / pseudoterminal / Vim via la Ctrlclé (haha), peuvent y être trouvés.
Alors qu'en C et dans la plupart des autres langues, vous utilisez généralement les codes octaux pour représenter ces «caractères».
Si vous voulez vraiment savoir d'où tout cela vient: le TTY démystifié . C'est le meilleur lien que vous rencontrerez sur ce sujet, mais attention: il y a des dragons.
TL; DR
Habituellement foo
= \n
, et bar
= \r
.