Ketika saya menghapus "kata" di Bash, itu akan berhenti di karakter tertentu seperti _ dan / . Misalnya, jika saya mengetik
/foo/bar
dan aktifkan backward-kill-word (biasanya dipetakan ke Alt –Spasi mundur dan/atau Ctrl –w ), teks yang tersisa adalah
/foo/
. Ini tidak sesuai dengan $COMP_WORDBREAKS atau readline rl_completer_word_break_characters . Bagaimana saya bisa mendeteksi (sebaiknya dalam sistem yang berjalan, daripada default dalam kode, karena mereka mungkin dapat diganti) karakter mana yang digunakan untuk menentukan jeda kata?
Jawaban yang Diterima:
Dokumentasi bash menyatakan:
backward-kill-word (M-Rubout)Bunuh kata di balik titik. Batas kata sama dengan yang digunakan oleh kata mundur.
Dan
backward-word (M-b)Kembali ke awal kata saat ini atau sebelumnya. Kata terdiri dari karakter alfanumerik (huruf dan angka).
Penanganan backward-word di Bash 4.2 dilakukan dalam kode libreadline yang dibundel (text.c:rl_backward_word ). Kata istirahat didasarkan pada rl_alphabetic , yang bergantung pada isalnum fungsi. Ini bergantung pada lokal, tetapi tidak dapat dikonfigurasi secara langsung di bash.
Perhatikan bahwa Bash 4.0 memperkenalkan jenis "kata" lain dengan shell-forward-word dan shell-backward-word tindakan (dan membunuh setara). Ini hanya rusak pada karakter meta shell (()<>;&|" ) dan kosong (mungkin tergantung lokal melalui isblank ), ditangani dalam kode bash utama (bashline.c ).