¿Qué son los separadores de palabras readline?

9

Cuando elimino una "palabra" en Bash, se detendrá en ciertos caracteres como _y /. Por ejemplo, si escribo

/foo/bar

y activar backward-kill-word (normalmente asignado a Alt- Backspacey / o Ctrl- w), el texto restante es

/foo/

. Esto no corresponde a $COMP_WORDBREAKSo readline'srl_completer_word_break_characters . ¿Cómo puedo detectar (preferiblemente en un sistema en ejecución, en lugar de los valores predeterminados en el código, ya que presumiblemente se pueden anular) qué caracteres se utilizan para determinar los saltos de palabras?

l0b0
fuente

Respuestas:

9

La documentación de bash dice:

backward-kill-word (M-Rubout)

Mata la palabra detrás del punto. Los límites de las palabras son los mismos que los de las palabras atrasadas.

Y

backward-word (M-b)

Vuelva al inicio de la palabra actual o anterior. Las palabras están compuestas de caracteres alfanuméricos (letras y dígitos).

El manejo de backward-worden Bash 4.2 se realiza en el código de línea libre incluido ( text.c:rl_backward_word). El salto de palabra se basa en lo rl_alphabeticque se basa en la isalnumfunción. Esto depende de la configuración regional, pero no se puede configurar directamente en bash.

Tenga en cuenta que Bash 4.0 introdujo otro tipo de "palabra" con los shell-forward-wordy shell-backward-wordlas acciones (y equivalentes de matar). Estos se rompen solo en metacaracteres de shell ( ()<>;&|") y espacios en blanco (posiblemente a través de la configuración regional isblank), manejados en el código bash principal ( bashline.c).

Estera
fuente
1
Buenas referencias, pero eso es bastante vago. Qué quieren decir [^A-Za-z0-9], [^[:alnum:]](localización dependiente) o alguna otra cosa?
l0b0
Estrictamente hablando, eso es configurable con configuraciones regionales (la alnumclase de caracteres), aunque eso también afectaría a otras aplicaciones.
Stéphane Chazelas
Ok, estaba buscando el lugar incorrecto en el código (shell-backward - *) ... La división se basa en isalnum, por lo tanto, depende de la configuración regional y es equivalente a su segunda versión, @ l0b0.
Mat
1
@Stephane Chazelas: quise decir que no se podía configurar a través de las opciones de bash, reformulé ese bit.
Mat