私はKittyエミュレータとbashシェルを使います。
知っていますCtrl+w削除できます。一言端末で(例:Ctrl+ Backspace)が、次のようなものがあるとしたらどうでしょうか?
sh /home/user/dir1/dir2/file.sh
ただ削除したいのですfile.sh
が?
これCtrlで+で削除できません。w行全体が削除されます。そして手動で削除したくありません。
1つのパス要素のみを削除する方法について提案がありますか?
答え1
私が正しく理解したら、あなたはbashを使っていて、デフォルトのEmacsスタイルで編集しています。それからEmacsチートシート役に立つかもしれません。Alt+Backspace
(backward-kill-word) を実行すると、最後の単語の先頭まで再度削除できます.
答え2
bash
ラインエディタとして使用されるアプリケーションや他のアプリケーションでは、ttyラインルール設定readline
にバインドされているすべての文字()werase
出力参照文字を他のウィジェットにバインドする試みは無視されます(AFAICT)。それに縛られています。stty -a
unix-word-rubout
werase
ほとんどのシステムではデフォルトのtty設定werase
になっています。^W
^W
したがって、readlineの他のコンテンツに再バインドするには、まずtty設定を変更する必要があります。
stty werase '^O'
werase
次のいずれかにバインディング^O
:
stty werase ''
完全に無効にしてください。
これにより、次のことができます。
bind '"\C-w": backward-kill-word'
またはアプリケーション"\C-w": backward-kill-word
に追加するだけです。~/.inputrc
readline
bash
^Wは必要に応じて単語を削除します。性格アンダースコアではなく、一連の文字または数字として定義されます。
ただし、これは自己行エディターを持たないアプリケーションから単語を削除するために^ Wを使用できないことを意味します。
または、完全に設定可能なすべてのテキスト移動/削除ウィジェットをzsh
代わりに使用できます。bash
またはすでに@AndreBeaudが言及されていますデフォルトでは、readlineのemacsモードにバインドされたAlt+ Backspace(通常は送信され^[^H
、後者はin)を使用します。^[^?
kitty
backward-kill-word
答え3
unix-filename-rubout
.inputrcへのバインディングの設定
"\C-b":unix-filename-rubout
この方法は、CTRL B
スラッシュまたはスペースが出るまで後方に削除することにマップされます。
パスにアンダースコアがあるとバックスラッシュまで削除されないALT BACKSPACE
ため、これはより良い解決策です。ALT BACKSPACE
下線は単語の境界として扱われます。
もちろん、他のキーボードショートカットを選択することもできます。