У синтаксисі 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.
Для цього використовуються послідовності відходу ANSI . Вставте два ^[
«S з допомогою Ctrl+ V, Esc.
Ви також можете спробувати Ctrl+ V, Ctrl+ M, Enter, що дасть вам:
bash: $'\r': command not found
Пам'ятаєте \r
зверху? :>
Цей список символів управління ASCII відрізняється від повної таблиці символів ASCII тим , що в ньому можна знайти контрольні символи, які вставляються в консоль / псевдотермінал / Vim за допомогою Ctrlключа (ха-ха).
Тоді як на C та більшості інших мов ви зазвичай використовуєте восьмеричні коди для представлення цих "символів".
Якщо ви дійсно хочете знати, звідки це все: TTY демістифікований . Це найкраще посилання, з яким ви натрапите на цю тему, але будьте уважні: є дракони.
TL; DR
Зазвичай foo
= \n
, і bar
= \r
.