ここには2つのラインエディターがあります。カーネルによって提供される基本的なラインエディター(標準モードのttyラインエディター)とbashのラインエディター(readlineライブラリを介して実装)です。これらの両方には、デフォルトでCtrl+にバインドされている「前の単語への消去」コマンドがありWます。キーは、正規モードのttyラインエディタ用にを介して設定できますstty werase
。bashは、独自の構成でオーバーライドされない限り、tty設定で見つけたキーバインディングを模倣します。
werase
ttyラインエディタのアクションは構成できません。空白文字で区切られた(ASCII)単語は常に消去されます。ttyラインエディタを操作することはめったにありません。たとえば、cat
引数なしで入力した場合などです。そこで豪華なキーバインディングが必要な場合は、readlineを使用するrlwrapなどのツールの下でコマンドを実行できます。
バッシュは、二つの提供前の単語を削除するためのコマンドを:unix-word-rubout
(Ctrl+ w又はセットなどを介してstty werase
)、およびbackward-kill-word
(M-DEL
すなわち、Esc Backspace)現在のロケールで英数字のシーケンスとしてワードを扱いおよび_
。Ctrl+でBackspace前の英数字のシーケンスを消去したい場合はstty werase
、を設定せずに、次の行をに挿入します.inputrc
。
"\C-h": backward-kill-word
これはあなたの端末がためにはCtrl + Hの文字を送信することを前提としていますCtrl+ Backspace。残念ながら、これは標準のバインディングがないこれらのキーの1つです(Backspace特に、歴史的な理由で混乱しています)。
デフォルトで(+ )にkill-word
バインドされている対称コマンドもあります。+ にバインドするには、まず端末が送信するエスケープシーケンスを特定し、次に対応する行をに追加する必要があります。+ を入力してから+ ; これは、イニシャルがエスケープ文字の視覚的表現であるようなものを挿入します。次に、バインディングはM-d
AltDCtrlDelete.inputrc
CtrlVCtrlDelete^[[3;5~
^[
"\e[3;5~": kill-word
どちらかの単語の定義に満足できない場合は、bashで独自の定義を提供できます。bashでのemacsスタイルのキーバインディングの混乱する動作を参照してください。