10

単語を区切るために bash (または readline) が使用する区切り記号を変更したいと考えています。'-'具体的には、単語を区切らないようにしたいので、テキストがある場合

ls some-file

それを押すと、文字だけでなくテキストAlt-Backspace全体が削除されます。これにより、キーを 1 回押すだけで、より速く簡単に長いフラグを削除することもできます。some-file'-'--group-directories-first

これがzshの振る舞いだと思いますし、bashも同じように振る舞いたいと思っています。

4

3 に答える 3

7

ctrl-w はまさにあなたが望むことをします。

于 2009-08-31T12:36:42.907 に答える
4

ctrl-Wにsttywerase設定が割り当てられている場合、ctrl-Wのbashキーマッピングは機能しないことに注意してください。「stty-a」を実行し、「werase = ^ W」が表示された場合、これが優先され、単語の境界が何であるかについてのttyのアイデアが使用されます。ttyの単語境界の考え方は通常空白ですが、bashのbackward-kill-word関数には-と/も含まれています。

Alt-Backspaceにwerase設定と同じことをさせたい場合は、次のようにすることができます。bind'"\ M- \ Ch":unix-word-rubout' bind'" \ M- \ C-?": unix-word-rubout '

また、実際にctrl-WにAlt-Backspaceの機能を実行させたい場合は、次のようにします。stty werase undef#これを実行しない限り、bashはfollowbindコマンドbind'"\ Cw":backwards-kill-word'を無視します。

于 2009-10-01T18:55:33.320 に答える
1

これは便利かもしれません: Ctrl-r は逆検索 (履歴と現在の行) を開始するので、スペースを押してエスケープするだけで、目的の場所に戻るか、もう一度 ctrl-r (最初のスペース) もう 1 つの引数に戻りたい場合。次に、必要に応じて残りの行を削除できます。

長いパス引数 (cp や diff など) を扱っていて、最初の引数の末尾を変更する必要がある場合に特に便利です。

\Mb にこれを実行させようとしましたが、スラッシュで止まります。

于 2010-02-07T01:21:49.873 に答える