Was sind die Readline-Worttrennzeichen?

9

Wenn ich ein "Wort" in Bash lösche, stoppt es bei bestimmten Zeichen wie _und /. Zum Beispiel, wenn ich tippe

/foo/bar

und aktivieren backward-kill-word(normalerweise zugeordnet auf Alt- Backspaceund / oder Ctrl- w), der verbleibende Text ist

/foo/

. Dies gilt nicht entsprechen $COMP_WORDBREAKSoder readlineistrl_completer_word_break_characters . Wie kann ich erkennen (vorzugsweise in einem laufenden System anstelle der Standardeinstellungen im Code, da diese vermutlich überschrieben werden können), welche Zeichen zur Bestimmung von Wortumbrüchen verwendet werden?

l0b0
quelle

Antworten:

9

In der Bash-Dokumentation heißt es:

backward-kill-word (M-Rubout)

Töte das Wort hinter Punkt. Wortgrenzen sind die gleichen wie die, die von Rückwärtswörtern verwendet werden.

Und

backward-word (M-b)

Gehen Sie zurück zum Anfang des aktuellen oder vorherigen Wortes. Wörter bestehen aus alphanumerischen Zeichen (Buchstaben und Ziffern).

Die Behandlung backward-wordin Bash 4.2 erfolgt im gebündelten libreadline-Code ( text.c:rl_backward_word). Das Wort break basiert auf rl_alphabetic, was sich selbst auf die isalnumFunktion stützt . Dies ist vom Gebietsschema abhängig, kann jedoch nicht direkt in Bash konfiguriert werden.

Beachten Sie, dass Bash 4.0 einen anderen "Wort" -Typ mit den Aktionen shell-forward-wordund eingeführt shell-backward-wordhat (und Äquivalente tötet). Diese werden nur bei Shell-Metazeichen ( ()<>;&|") und Leerzeichen (möglicherweise vom Gebietsschema abhängig von isblank) unterbrochen , die im Haupt-Bash-Code ( bashline.c) behandelt werden.

Matte
quelle
1
Gute Referenzen, aber das ist ziemlich vage. Haben sie bedeuten [^A-Za-z0-9], [^[:alnum:]](Lokalisierung abhängig) oder etwas anderes?
10.
Genau genommen ist dies mit Gebietsschemas (der alnumZeichenklasse) konfigurierbar, obwohl dies auch andere Anwendungen betreffen würde.
Stéphane Chazelas
Ok, habe an der falschen Stelle im Code gesucht (Shell-Backward - *) ... Die Aufteilung basiert auf isalnum, also tatsächlich vom Gebietsschema abhängig und entspricht Ihrer zweiten Version, @ l0b0.
Mat
1
@Stephane Chazelas: Ich meinte, dass es nicht über Bash-Optionen konfiguriert werden konnte, umformulierte dieses Bit.
Mat