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
).