Když smažu „slovo“ v Bash, zastaví se na určitých znacích, jako je _
a /
. Například když napíšu
/foo/bar
a aktivujte backward-kill-word
(obvykle mapováno na Alt –Backspace a/nebo Ctrl –w ), zbývající text je
/foo/
. To není odpovídají $COMP_WORDBREAKS
nebo readline
rl_completer_word_break_characters
. Jak mohu zjistit (nejlépe v běžícím systému, spíše než výchozí hodnoty v kódu, protože je lze pravděpodobně přepsat), které znaky se používají k určení dělení slov?
Přijatá odpověď:
Dokumentace bash uvádí:
backward-kill-word (M-Rubout)
Zabijte slovo za bodem. Hranice slov jsou stejné jako ty, které používá zpětné slovo.
A
backward-word (M-b)
Přesun zpět na začátek aktuálního nebo předchozího slova. Slova se skládají z alfanumerických znaků (písmen a číslic).
Zpracování backward-word
v Bash 4.2 se provádí v přibaleném kódu libreadline (text.c:rl_backward_word
). Rozdělení slov je založeno na rl_alphabetic
, který sám spoléhá na isalnum
funkce. To je závislé na národním prostředí, ale nelze jej konfigurovat přímo v bash.
Všimněte si, že Bash 4.0 zavedl další typ „word“ s shell-forward-word
a shell-backward-word
akce (a ekvivalenty zabíjení). Tyto se lámou pouze u metaznaků shellu (()<>;&|"
) a mezery (pravděpodobně závislé na národním prostředí pomocí isblank
). ), zpracovaný v hlavním bash kódu (bashline.c
).