Các ký tự ẩn được chèn sau pipe (|) theo sau là khoảng trắng [trùng lặp]


13

Rất thường xuyên, trên máy Mac của tôi, khi tôi sử dụng ký tự pipe (|) theo sau là ký tự khoảng trắng, một ký tự vô hình sẽ được chèn vào giữa.

Điều này đặc biệt khó chịu khi sử dụng thiết bị đầu cuối, vì nó làm cho các lệnh không hợp lệ.

Nếu tôi gõ như sau trong iterm2, tôi thường nhận được những điều sau:

ls | cat
zsh: command not found:  cat

Nếu tôi nhấn phím mũi tên lên để nhận lệnh trước đó, sau đó xóa và đặt lại khoảng trắng giữa |cat, lệnh sẽ hoạt động.

Khi tôi sao chép, dán các lệnh làm việc và không hoạt động vào một tệp, như thế này:

non-working: ls | cat
working: ls | cat

và mở nó trong Hex Fiend, nó hiển thị như sau:

non-working: ls | cat
working: ls | cat

Tôi cũng đã trải qua loại vấn đề tương tự trong SublimeText2 bằng cách sử dụng dấu ngoặc vuông ( []) theo sau là khoảng trắng . Vì vậy, tôi không tin đó là vấn đề với iTerm2.


1
Liên quan đến vấn đề này, có cách nào để Terminal hiển thị các ký tự vô hình, tương tự như cách các trình soạn thảo văn bản hiển thị chúng, ví dụ như một viên đạn màu xám?
jelovirt

Câu trả lời:


14

Điều gì xảy ra là bạn tiếp tục nhấn bằng thanh dấu cách, chèn một khoảng trắng không phá vỡ , được biết đến trong HTML thông qua  tham chiếu. Không gian không phá vỡ này rất hữu ích trong xử lý văn bản nơi bạn muốn các từ nhất định gắn kết với nhau, như "OS" và "X" trong "OS X".

Rõ ràng, đây là một ký tự unicode ( 00A0) và do đó, hầu hết các tiện ích dòng lệnh sẽ thất bại, chẳng hạn như bash see _cat( _không gian không phá vỡ) và Hex Fiend chỉ sử dụng một đại diện xấu cho nó. Mặt khác, một số trình soạn thảo sẽ âm thầm loại bỏ nó (ví dụ: trình soạn thảo này ngay tại đây), trong khi những người khác thậm chí có một đại diện đặc biệt cho nó (ví dụ TextMate hiển thị một dấu chấm thay vì khoảng trống).

Có hai giải pháp:


Điều này thực sự xuất hiện là vấn đề. Không thể tin rằng tôi đã không bắt được điều này trước đây. Tôi đoán một giải pháp sẽ là ánh xạ lại không gian kết hợp với công cụ sửa đổi thành một ký tự không gian thông thường.
tiện lợi

Có thể biến Terminal display nbsp thành một ký tự ngược hoặc một số loại, vì vậy bạn sẽ thấy nó ngay lập tức khi bạn gõ nhầm?
forthrin

@forthrin Câu hỏi hay. Tôi không biết cách nào để làm điều đó, ngoài việc làm rối các cài đặt ngôn ngữ của bạn sao cho các ký tự không phải ASCII có thể được hiển thị đúng.
slhck
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.