Karakter tersembunyi dimasukkan setelah pipa (|) diikuti oleh spasi [duplikat]

13

Sangat sering, di Mac saya, ketika saya menggunakan karakter pipa (|) diikuti oleh karakter spasi, karakter yang tidak terlihat akan dimasukkan di antaranya.

Ini sangat mengganggu ketika menggunakan terminal, karena membuat perintah tidak valid.

Jika saya mengetik berikut ini di iterm2, saya sering mendapatkan yang berikut:

ls | cat
zsh: command not found:  cat

Jika saya menekan tombol panah atas untuk mendapatkan perintah saya sebelumnya, dan kemudian menghapus dan masukkan kembali ruang di antara |dan cat, perintah akan bekerja.

Ketika saya menyalin, tempel perintah yang berfungsi dan yang tidak berfungsi ke dalam file, seperti ini:

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

dan buka di Hex Fiend itu menunjukkan hal berikut:

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

Saya juga mengalami masalah yang sama di SublimeText2 menggunakan tanda kurung ( []) diikuti oleh spasi. Jadi saya tidak percaya ini masalah dengan iTerm2.

bagus
sumber
1
Terkait dengan ini, apakah ada cara agar Terminal menunjukkan karakter yang tidak terlihat, mirip dengan bagaimana editor teks menunjukkannya, misalnya sebagai bullet abu-abu?
jelovirt

Jawaban:

14

Apa yang terjadi adalah Anda terus menekan dengan spasi, yang menyisipkan ruang tanpa putus , dikenal dalam HTML melalui  referensi. Ruang tanpa putus ini berguna dalam pemrosesan teks di mana Anda ingin kata-kata tertentu saling menempel, seperti "OS" dan "X" di "OS X".

Jelas, ini adalah karakter unicode ( 00A0), dan karenanya sebagian besar utilitas command-line akan gagal, seperti bash seeing _cat(di mana _ruang non-breaking), dan Hex Fiend hanya menggunakan representasi buruk untuknya. Beberapa editor di sisi lain hanya akan menghapusnya secara diam-diam (misalnya editor ini di sini), sementara yang lain bahkan memiliki representasi khusus untuk itu (misalnya TextMate menunjukkan sebuah titik alih-alih ruang kosong).

Ada dua solusi:

slhck
sumber
Ini memang tampaknya menjadi masalah. Tidak percaya saya belum pernah menangkap ini sebelumnya. Saya kira solusinya adalah untuk memetakan ulang ruang yang dikombinasikan dengan pengubah ke karakter ruang biasa.
nifty
Apakah mungkin untuk membuat Terminal menampilkan nbsp sebagai karakter terbalik atau semacamnya, sehingga Anda akan langsung melihatnya ketika Anda salah ketik?
sebagainyarin
@forthrin Pertanyaan bagus. Saya tidak tahu cara untuk melakukan itu, selain mengacaukan pengaturan lokal Anda sehingga karakter non-ASCII tidak dapat ditampilkan dengan benar.
slhck