В синтаксисе s/foo/bar
, \r
и \n
имеют разные значения в зависимости от контекста.
Короткий:
Для foo
:
\ n = перевод строки (LF в Linux / Mac, CR + LF в Windows)
\ r = возврат каретки (CR)
Для bar
:
\ r = перевод строки
\ n = нулевой байт.
Длиннее (с номерами ASCII):
NUL
= 0x00 = 0 = Ctrl+ @
LF
= 0x0A = 10 = Ctrl+ J
CR
= 0x0D = 13 = Ctrl+M
Вот список управляющих символов ASCII . Вставьте их в Vim через Ctrl+ V, Ctrl+ ---key---.
В Bash или других оболочках Unix / Linux просто введите Ctrl+ ---key---.
Попробуйте Ctrl+ Mв Bash. Это то же самое, что и удар Enter, поскольку оболочка понимает, что имеется в виду, хотя системы Linux используют перевод строки для разграничения строк.
Для вставки литералов в bash, добавление их к Ctrl+ Vтакже будет работать.
Попробуй в Bash:
echo ^[[33;1mcolored.^[[0mnot colored.
Это использует escape-последовательности ANSI . Вставьте два ^[
«S с помощью Ctrl+ V, Esc.
Вы также можете попробовать Ctrl+ V, Ctrl+ M, Enter, что даст вам:
bash: $'\r': command not found
Помните \r
сверху? :>
Этот список управляющих символов ASCII отличается от полной таблицы символов ASCII тем , что там Ctrlможно найти управляющие символы, которые вставляются в консоль / псевдотерминал / Vim с помощью ключа (ха-ха).
В то время как в C и большинстве других языков вы обычно используете восьмеричные коды для представления этих «символов».
Если вы действительно хотите знать, откуда все это: TTY демистифицировано . Это лучшая ссылка, с которой вы столкнетесь по этой теме, но будьте осторожны: там будут драконы.
TL; DR
Обычно foo
= \n
и bar
= \r
.