Quels sont les séparateurs de mots readline?

9

Lorsque je supprime un "mot" dans Bash, il s'arrête à certains caractères comme _et /. Par exemple, si je tape

/foo/bar

et activer backward-kill-word(généralement mappé à Alt- Backspaceet / ou Ctrl- w), le texte restant est

/foo/

. Cela ne pas correspondent à $COMP_WORDBREAKSou readline« srl_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?

l0b0
la source

Réponses:

9

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 en arrière.

Et

backward-word (M-b)

Revenez 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-wordBash 4.2 se fait dans le code libreadline fourni ( text.c:rl_backward_word). Le mot break est basé sur rl_alphabetic, qui lui-même repose sur la isalnumfonction. Ceci dépend des paramètres régionaux, mais n'est pas configurable directement dans bash.

Notez que Bash 4.0 introduit un autre type « mot » avec les shell-forward-wordet shell-backward-wordactions (et équivalents kill). Ceux-ci ne se brisent que sur les méta-caractères du shell ( ()<>;&|") et les blancs (éventuellement dépendants des paramètres régionaux via isblank), traités dans le code bash principal ( bashline.c).

Tapis
la source
1
Bonnes références, mais c'est plutôt vague. Est - ce qu'ils veulent dire [^A-Za-z0-9], [^[:alnum:]]( en fonction de la localisation) ou autre chose?
l0b0
Strictement parlant, c'est configurable avec les paramètres régionaux (la alnumclasse de caractères), mais cela affecterait également d'autres applications.
Stéphane Chazelas
Ok, je regardais au mauvais endroit dans le code (shell-backward - *) ... Le fractionnement est basé sur isalnum, donc en effet dépendant des paramètres régionaux et équivalent à votre deuxième version, @ l0b0.
Mat
1
@Stephane Chazelas: Je voulais dire qu'il ne pouvait pas être configuré via les options bash, reformulé ce bit.
Mat