前のスラッシュまで削除するbash readline


15

bash emacsモードでは、前のスラッシュ文字まで削除する必要がありますか?たとえば、コマンドcp /usr/local/bin/reallylongincorrectfolder /home/myname/reallylong_and_correct_pathを入力して、単に削除しreallylongincorrectfolderたい場合、ショートカットはありますか?これは私にとってbashの非常にコマースなシナリオです。dF<char>viのようなものですか?

回答:


9
bind -P |grep unix-filename-rubout

たとえば、キーバインドをテストするには Ctrl- b

bind \\C-b:unix-filename-rubout

永続的に使用するには、それを追加します ~/.inputrc


2
に追加するには~/.inputrc、次のような行をそのファイルに追加します"\C-b": unix-filename-rubout。効果を確認するには、新しいbashシェルを起動する(またはGNU readlineライブラリを使用する他のプログラムを実行する)必要があります。
クロードランシャン

11

Alt- BackspaceCtrl- wは一般的ににマッピングされbackward-kill-word、これを行います。システムでマップされているもの(ある場合)を調べるには、を実行しbind -P | grep '^backward-kill-word'ます。

@Barmarで説明したように、これはと異なりunix-word-rubout、以前のスペース境界を削除します。


しかし、それは言葉全体を殺すだろう。私は最後のスラッシュまで殺したい
-woodstok

ここでは最後のスラッシュのみが削除されます。スラッシュはデフォルトの単語区切りの1つです。Bashを使用してよろしいですか?
-l0b0

私の悪い.. Alt-Backspaceは最後のスラッシュまでそれを削除します。ALt-BackSpaceとCtrl-Wの違いは何ですか?
ウッドストック

3
Ctl-wは通常unix-word-rubout単語境界として空白を使用して、ポイントの後ろの単語を削除します。
バーマー

2
これは正確には機能しません。「単語は英数字(文字と数字)で構成されています」。したがって、単なるスラッシュ以上のもので停止します。default-unbound unix-filename-ruboutは、空白とスラッシュで停止するため、わずかに優れています。
スパルホーク

6

あなたのこれを入れて.inputrc、新しいシェルを開始します。

C-b:unix-filename-rubout

Ctrl- b次のスラッシュまで後方に消去するようになりました。

涅槃!

忘れてはいけないCtrl- XCtrl- Eあなたが快適に複雑なコマンドラインを編集することができますので、あなたのエディタを起動します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.