Trong cú pháp s/foo/bar
, \r
và \n
có ý nghĩa khác nhau, tùy thuộc vào ngữ cảnh.
Ngắn:
Dành cho foo
:
\ n = dòng mới (LF trên Linux / Mac, CR + LF trên Windows)
\ r = trả lại vận chuyển (CR)
Dành cho bar
:
\ r = là dòng mới
\ n = null byte.
Dài hơn (với số ASCII):
NUL
= 0x00 = 0 = Ctrl+ @
LF
= 0x0A = 10 = Ctrl+ J
CR
= 0x0D = 13 = Ctrl+M
Dưới đây là danh sách các ký tự điều khiển ASCII . Chèn chúng vào Vim qua Ctrl+ V, Ctrl+ ---key---.
Trong Bash hoặc các shell Unix / Linux khác, chỉ cần gõ Ctrl+ ---key---.
Hãy thử Ctrl+ Mtrong Bash. Nó cũng giống như đánh Enter, vì shell nhận ra ý nghĩa của nó, mặc dù các hệ thống Linux sử dụng nguồn cấp dữ liệu để phân định dòng.
Để chèn chữ theo nghĩa đen, việc thêm chúng bằng Ctrl+ Vcũng sẽ hoạt động.
Hãy thử trong Bash:
echo ^[[33;1mcolored.^[[0mnot colored.
Điều này sử dụng trình tự thoát ANSI . Chèn hai ^[
thông qua Ctrl+ V, Esc.
Bạn cũng có thể thử Ctrl+ V, Ctrl+ M, Entersẽ cung cấp cho bạn cái này:
bash: $'\r': command not found
Ghi nhớ \r
từ trên? :>
Đây ASCII ký tự điều khiển danh sách là khác nhau từ một hoàn chỉnh bảng biểu tượng ASCII , trong đó các ký tự điều khiển, được đưa vào một giao diện điều khiển / pseudoterminal / Vim qua Ctrlchính (haha), có thể được tìm thấy ở đó.
Trong khi ở C và hầu hết các ngôn ngữ khác, bạn thường sử dụng mã bát phân để thể hiện các 'ký tự' này.
Nếu bạn thực sự muốn biết tất cả những thứ này đến từ đâu: TTY bị phá hủy . Đây là liên kết tốt nhất bạn sẽ bắt gặp về chủ đề này, nhưng hãy cẩn thận: Có những con rồng.
TL; DR
Thông thường foo
= \n
, và bar
= \r
.