2009-03-24 3 views
3

Bashはreadlineを使い、readlineは "kill-word"でカーソルの右側の単語を削除することができます。bashでは、どうやってコントロールを削除するのがkill-wordですか?

問題は、control-deleteのキー押下を認識することにあります。 bashで押すと "5〜"が画面に出力されます。私はすることができますが、これは1日に "5〜"と入力する必要があり、その代わりに単語を右に削除します。だから、私はむしろ正確な制御シーケンスを発見するだろう。

私はグーグルで、かなりのリソースが「削除」キーについて議論していますが、私が見つけたものは「制御削除」キーについて議論していません。私は多くのバリエーションを実験しましたが、何も動作しません。

私がこの面倒で無礼な挽回に費やした時間は、本当に非問題でなければならない時が最悪です。

EDIT:それは(それがコントロール-Vに続いてコントロール-Qですが、それらの間Controlキーを離すことは結構です)ので、多分XEVと解決策があると、X経由だとあなたは^ Q^Vを入力した場合

答えて

10

、 )例えば~/.bashrc

bind '"\e[3;5~":kill-word' 

それとも、あなたは~/.inputrcに以下を追加することができますので、Ctrlキーを押しながら削除を殺すワードをreadlineのを使用するすべてのプログラムで行います。

"\e[3;5~": kill-word 

これはCtrl-Deleteキーだけをバインドするので、5〜を入力する必要が生じた場合に心配する必要はありません。

+0

これは〜/ .bashrcにあり、〜/ .inputrcの形式が違うと言いたいことがあります。これは、他のアプリケーションでもうまく動作させるためには使いやすいです。 –

+0

私は、バインド...を〜/ .bashrcに入れるのではなく、〜/ .inputrcに\ e [3; 5〜 ":kill-word'を書き、このキーバインディングをすべてのreadline-usingプログラム。 – ephemient

+0

今、それは動作します、ありがとう! BTW:最初にあなたの答えを読んだとき、私は「Ctrl-V」に気付かず、これを(それが欠けていたパズルの鍵となる) 。 – 13ren

2

をXMODMAP 、そしてControl + Deleteを押すと、あなたが言及した出力が得られますか?私はちょうどそれを試して、少なくともパテを使用して私はすべての応答を取得しないでください。しかし、おそらく実際のLinuxコンソールでは動作が異なります。

他のキーの場合、readlineは長いシーケンスを表示します。誤って入力するのは難しい特殊な「コマンドシーケンス導入」文字を含むことがよくあります。それを試して、^ Q^Vコマンド(これはbtw、quoted-insertと呼ばれる)で長いシーケンスが得られるかどうかを確認してください。

たとえば、^ Q^Vを押し、次に(コントロールを押さないで)削除すると、readlineは^[[3~を出力します。これは、私が\e[[3~と言って、Deleteキーに物をバインドできることを示しています。 CSI文字があなたのために存在する可能性が高いようですが、入力を正しく引用するようにreadlineを要求していないので、あなたはそれを見ていません。

+0

感謝の左に1つの単語を削除し、それは私が必要なものです: - )。^deleteは:^ [[3; 5〜と普通の削除は:^ [[〜あなたと同じです。ちなみに、CSIは、フォレンジックツールによって明らかにされたものの略語です:-)。 – 13ren

+0

BTW:^ Vは^ Q^Vと同じ効果があります。引用符(^ Q)が重要な違いを生むケースもあると思っていますが、^ deleteの具体的なケースはその1つではありません。 – 13ren

+0

btw:typing^[[3〜は同じアクションをトリガーしません。明示的に入力された文字と混乱しないように、エスケープすることがあると思います。 – 13ren

3

あなたが見るものは、真実ではありません。それはおそらく<ESC>5~かそのようなものです。 Ctrl-V Ctrl-Deleteを試してください。 Ctrl-Vは「次のことを解釈しない」ことを意味します。

だから、かなり安全でなければならないバインド<ESC>5~です。あなたの中にあなたがbashのために、このようにバインドを使用できるように^[エスケープ文字は、\ eで置き換えることができ

^[[3;5~ 

(:Ctrl + Vキー、Ctrlキーを押しながら削除出力し、これを押すと、私のマシンで

+0

ctrl-vのおかげで本当に助けてくれます! – 13ren

+0

ところで:あなたが入力した特殊文字が表示されなかったと思いますか? – 13ren

+0

ヘッドアップありがとうございました。私は投稿後にテキストをチェックすることを忘れました。 –

0

Ctrl-Wは単語を削除します。

Ctrl-uは行を削除します。

これらはEmacs(M-wとM-u)に基づいています。

2

Altキー+ Dカーソル のCtrl + Wの右に一つの単語を削除し、カーソル (両方がEmacsのに基づいており、私は信じている)

関連する問題