Lorsque je supprime un "mot" dans Bash, il s'arrête à certains caractères comme _
et /
. Par exemple, si je tape
/foo/bar
et activez backward-kill-word
(généralement mappé sur Alt –Retour arrière et/ou Ctrl –w ), le texte restant est
/foo/
. Cela n'est pas correspondent à $COMP_WORDBREAKS
ou readline
's rl_completer_word_break_characters
. Comment puis-je détecter (de préférence dans un système en cours d'exécution, plutôt que les valeurs par défaut dans le code, car elles peuvent probablement être remplacées) quels caractères sont utilisés pour déterminer les sauts de mots ?
Réponse acceptée :
La documentation bash indique :
backward-kill-word (M-Rubout)
Tuez le mot derrière le point. Les limites des mots sont les mêmes que celles utilisées par les mots inversés.
Et
backward-word (M-b)
Revenir au début du mot actuel ou précédent. Les mots sont composés de caractères alphanumériques (lettres et chiffres).
La gestion de backward-word
dans Bash 4.2 se fait dans le code libreadline fourni (text.c:rl_backward_word
). Le saut de mot est basé sur rl_alphabetic
, qui lui-même repose sur le isalnum
une fonction. Cela dépend des paramètres régionaux, mais n'est pas configurable directement dans bash.
Notez que Bash 4.0 a introduit un autre type de "mot" avec le shell-forward-word
et shell-backward-word
actions (et kill équivalents). Ceux-ci cassent uniquement sur les méta-caractères du shell (()<>;&|"
) et des blancs (éventuellement en fonction des paramètres régionaux via isblank
), géré dans le code bash principal (bashline.c
).