Caret khung vuông vuông A ^ [[A - Nó có nghĩa là gì?


13

Xin lỗi nếu điều này đã được hỏi, nhưng tôi không biết làm thế nào tôi có thể tự mình tìm ra điều này - khi tôi tìm kiếm "^ [[A" trong bất kỳ công cụ tìm kiếm nào, nó sẽ bỏ qua phần "^ [[" hoàn toàn.

Dù sao, câu hỏi của tôi: Đôi khi trong thiết bị đầu cuối (trên máy Mac) khi tôi nhấn các phím mũi tên, các ký tự "^ [[A", "^ [[B", "^ [[C" hoặc "^ [[D" xuất hiện . Tôi dường như nhớ rằng đã gặp phải những năm trước đây khi sử dụng (rất có thể) DOS và tôi nghĩ rằng nó cũng xảy ra thường xuyên hơn rất nhiều.

Tại sao điều này xảy ra và chúng có ý nghĩa gì?

Câu trả lời:


20

Đây là các mã thoát ANSI . Ký tự ^[đại diện cho ký tự ESC (thoát), tiếp theo [là dấu ngoặc vuông bên trái thực tế và chữ cái cho biết chức năng của mã thoát. Phần Esc[này được gọi là CSI (Control Sequence Giới thiệu). Vì vậy, chuỗi CSI Acó nghĩa là mũi tên lên, hoặc CUU (CUrsor Up).

Dù sao, sơ đồ này có từ thời của thiết bị đầu cuối hiển thị VT100 (được giới thiệu vào năm 1978). Một số trình tự thoát được sử dụng bởi VT100 đã được ANSI tiêu chuẩn hóa vào đầu những năm 1980 và vẫn được sử dụng phổ biến kể từ đó.

Thông thường, khi bạn nhấn các phím mũi tên, một số chương trình (nói vỏ) đang lắng nghe và có thể hành động theo chúng. Vì vậy, khi bạn nhấn mũi tên lên, nó sẽ cuộn lại trong lịch sử lệnh của bạn. Tuy nhiên, nếu một chương trình đang chạy mà không hiểu các chuỗi thoát cho các phím mũi tên, thì chúng thường sẽ bị dội ngược trở lại thiết bị đầu cuối giống như bất kỳ phím nào khác mà bạn có thể nhấn. Vì vậy, đó là lý do tại sao đôi khi bạn thấy ^[[Anếu bạn nhấn phím mũi tên lên.


Cũng đáng để chỉ ra rằng ^ là quy ước UNIX phổ biến để hiển thị "điều khiển" trong thiết bị đầu cuối. Ví dụ: nếu bạn nhấn Ctrl + A và nó sẽ bị bỏ qua theo cùng một cách nó sẽ được hiển thị là "^ A". Ctrl + [thực sự là một từ đồng nghĩa với ký tự thoát. Ngẫu nhiên, điều gì làm cho điều này xảy ra ở nơi đầu tiên; Phần mềm nào quyết định in dấu mũ? Có phải nó là trình giả lập thiết bị đầu cuối, hoặc cái gì khác mà tôi không biết?
Muzer

@Muzer hạt nhân tự định dạng dấu mũ của các ký tự lặp lại. Có thể tắt tính năng này vớistty -echoctl

Hạt nhân? Thật thú vị, tôi không biết nó đã đi sâu đến thế (mặc dù nhìn chung, nó đáng lẽ phải rõ ràng, vì nó thậm chí còn xảy ra ở giai đoạn khởi động rất sớm!).
Muzer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.