Bashで「単語」を削除すると、_
などの特定の文字で停止します。 および/
。たとえば、「
/foo/bar
backward-kill-word
をアクティブにします (通常は Altにマップされます –バックスペース および/またはCtrl – w )、残りのテキストは
/foo/
。これはではありません $COMP_WORDBREAKS
に対応 またはreadline
のrl_completer_word_break_characters
。単語の区切りを決定するために使用されている文字を(おそらく、コードのデフォルトではなく、実行中のシステムで)検出するにはどうすればよいですか?
承認された回答:
bashのドキュメントには次のように記載されています:
backward-kill-word (M-Rubout)
ポイントの後ろの単語を殺します。単語の境界は、backward-wordで使用されるものと同じです。
そして
backward-word (M-b)
現在または前の単語の先頭に戻ります。単語は英数字(文字と数字)で構成されています。
backward-word
の処理 Bash 4.2では、バンドルされたlibreadlineコード(text.c:rl_backward_word
)。単語区切りはrl_alphabetic
に基づいています 、それ自体がisalnum
に依存しています 働き。これはロケールに依存しますが、bashで直接構成することはできません。
Bash 4.0では、shell-forward-word
を使用して別の「単語」タイプが導入されたことに注意してください。 およびshell-backward-word
アクション(および同等のものを殺す)。これらはシェルメタ文字(()<>;&|"
)と空白(おそらくisblank
を介してロケールに依存します )、メインのbashコード(bashline.c
で処理されます 。