Saya menggunakan tata letak keyboard Finlandia yang memetakan AltGr+ Spaceke ruang non-breaking (NBSP, U + 00A0). Saya senang dengan ini secara umum, tetapi saya menemukan bahwa saya sering secara tidak sengaja menulis NBSP daripada ruang normal setelah |
simbol " " pipa (ditulis dengan AltGr+ <dengan tata letak keyboard Finlandia) saat menggunakan baris perintah bash. Saya kira ini disebabkan oleh fakta bahwa saya perlu memegang AltGrsambil mengetik pipa dan melepaskannya sebelum mengenai ruang. Dan ketika saya memiliki waktu yang tidak tepat untuk rilis AltGrsaya berakhir dengan salah ketik pada baris perintah dan pesan kesalahan seperti
grep: command not found
yang terlihat sangat mirip
grep: command not found
yang membuat masalah ini agak sulit untuk diperhatikan pada pertama kalinya.
Saya tahu bahwa saya dapat menonaktifkan NBSP tapi saya lebih suka menonaktifkannya (harus AltGr+ Spaceuntuk menghasilkan ruang biasa) hanya setelah karakter pipa, atau jika itu tidak mungkin, selalu di baris atau readline
level perintah bash . Apakah ada cara sederhana untuk melakukan ini tanpa memodifikasi kode sumber bash, readline
atau emulator terminal saya ( gnome-terminal
)?
Solusi lain yang baik adalah mengkonfigurasi NBSP agar terlihat pada baris perintah, misalnya diganti dengan karakter lain (katakanlah U + 2423 ␣
) untuk rendering saja.
sumber
" ":␣
cukup? Apa lagi yang kamu butuhkan?echo a␣b
tetapi output line dihasilkanecho a b
dengan NBSP nyata di output. Karena itu, saya pikir itu harus dilakukan pada tingkat readline (yaitu, editor baris perintah selalu menampilkan karakter yang terlihat tetapi terminal emulator tidak dapat mengetahui perbedaan antara tampilan editor dan tampilan keluaran dan oleh karena itu terminal emulator tidak dapat melakukan penggantian visual untuk rendering ).Jawaban:
Ini bisa dilakukan pada
readline
level dua cara berbeda.Metode 1
Masukkan berikut ini
.inputrc
(file konfigurasi untukreadline
):Jika penurunan harga mengacaukan hal di atas, Anda harus memberi tanda kutip NBSP di sisi kiri titik dua seperti yang dijelaskan dalam komentar. Ini akan memetakan setiap kejadian NBSP pada aliran input dengan ruang reguler.
Metode 2
Masukkan sebagai berikut
.inputrc
:Idenya adalah untuk memetakan urutan kunci {pipe diikuti oleh NBSP} ke {pipe diikuti oleh space}. Ini berfungsi jika Anda mengetik urutan dalam 250 ms (dapat dikonfigurasi di atas). Namun, hingga batas waktu habis, mengetik simbol pipa saja tidak akan menghasilkan apa-apa. Dan jika Anda mengetik urutan terlalu lambat, perbaikannya tidak akan diterapkan. Perhatikan juga bahwa batas waktu bersifat global sehingga jika Anda bermaksud menggunakan urutan lain, Anda harus menetapkan batas waktu cukup lama untuk dapat mengetik urutan terpanjang. (Perpustakaan readline tidak cukup pintar untuk memungkinkan pengetikan karakter dan kemudian mengganti karakter yang sudah terlihat setelah urutan karakter cocok dengan konfigurasi.)
sumber
Ada artikel bagus yang membahas masalah ini:
Saya telah berusaha untuk mengatasi masalah utama dengan
grep
pesan kesalahan dan mengubah NBSP menjadi sesuatu yang lebih terlihat menggunakanexec
perintah. Saya belum menerima sintaks tepuk bawah:Idenya adalah untuk memiliki perintah ini
~/.bashrc
sehingga secara otomatis dimuat dengangnome-terminal
pembukaan. Tapi seperti yang saya katakan itu belum berfungsi ...sumber
perl -i -npe 's/MARKER/4 KB/'
dan saya tidak sengaja memasukkan NBSP antara4
danK
. Ups, masalahnya disimpan ke dalam file tetapi saya tidak mendapatkan kesalahan dan baris perintah yang saya tulis terlihat sempurna.