อักขระที่ซ่อนอยู่แทรกหลังไพพ์ (|) แล้วตามด้วยเว้นวรรค [ซ้ำ]


13

บ่อยครั้งที่บน Mac ของฉันเมื่อฉันใช้อักขระไปป์ (|) ตามด้วยอักขระเว้นวรรคอักขระที่มองไม่เห็นจะถูกแทรกระหว่าง

สิ่งนี้น่ารำคาญเป็นพิเศษเมื่อใช้เครื่องเทอร์มินัลเนื่องจากทำให้คำสั่งไม่ถูกต้อง

ถ้าฉันพิมพ์ต่อไปนี้ใน iterm2 ฉันมักจะได้รับสิ่งต่อไปนี้:

ls | cat
zsh: command not found:  cat

หากฉันกดปุ่มลูกศรขึ้นเพื่อรับคำสั่งก่อนหน้าของฉันจากนั้นลบและแทรกช่องว่างระหว่าง|และcatอีกครั้งคำสั่งจะทำงาน

เมื่อฉันคัดลอกวางคำสั่งการทำงานและไม่ทำงานลงในไฟล์เช่นนี้:

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

และเปิดในHex Fiendจะแสดงสิ่งต่อไปนี้:

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

ฉันเคยพบปัญหาประเภทเดียวกันใน SublimeText2 โดยใช้เครื่องหมายวงเล็บเหลี่ยม ( []) ตามด้วยช่องว่าง ดังนั้นฉันไม่เชื่อว่าจะมีปัญหากับ iTerm2


1
ที่เกี่ยวข้องกับสิ่งนี้มีวิธีที่เทอร์มินัลแสดงตัวอักษรที่มองไม่เห็นคล้ายกับวิธีแก้ไขข้อความที่แสดงให้พวกเขาเห็นเช่นกระสุนปืนสีเทา?
jelovirt

คำตอบ:


14

สิ่งที่เกิดขึ้นคือคุณกดปุ่มspace bar ค้างไว้ซึ่งจะเป็นการแทรกพื้นที่ที่ไม่ทำลายซึ่งรู้จักกันใน HTML ผ่านการ อ้างอิง พื้นที่ที่ไม่ทำลายนี้มีประโยชน์ในการประมวลผลข้อความที่คุณต้องการให้คำบางคำติดกันเช่น "OS" และ "X" ใน "OS X"

เห็นได้ชัดว่านี่เป็นอักขระ Unicode ( 00A0) และส่วนใหญ่ดังนั้นสาธารณูปโภคบรรทัดคำสั่งจะล้มเหลวเช่นทุบตีเห็น_cat(ซึ่ง_เป็นพื้นที่ที่ไม่ทำลาย) และ Hex ปีศาจเพียงแค่ใช้การแสดงที่ไม่ดีสำหรับมัน บรรณาธิการบางคนจะเอาออกเงียบ ๆ (เช่นบรรณาธิการนี้ที่นี่) ในขณะที่คนอื่นมีการแสดงพิเศษสำหรับมัน (เช่น TextMate แสดงจุดแทนพื้นที่ว่าง)

มีสองวิธีแก้ไข:


นี่ดูเหมือนจะเป็นปัญหาอย่างแน่นอน ไม่อยากจะเชื่อเลยว่าฉันไม่เคยเห็นสิ่งนี้มาก่อน ฉันเดาวิธีแก้ปัญหาคือการแมปพื้นที่รวมกับตัวดัดแปลงเป็นอักขระช่องว่างปกติ
ดี

เป็นไปได้ไหมที่จะทำให้ Terminal แสดงเป็นอักขระย้อนกลับหรือเรียงลำดับดังนั้นคุณจะเห็นได้ทันทีเมื่อพิมพ์ผิด?
outrin

@forthrin เป็นคำถามที่ดี ฉันไม่ทราบวิธีการอื่นนอกเหนือจากการยุ่งกับการตั้งค่าภาษาของคุณเช่นอักขระที่ไม่ใช่ ASCII ไม่สามารถแสดงได้อย่างถูกต้อง
slhck
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.