BashでのWindowsシェルエスケープキー(行全体の削除)と同等


13

Windowsコマンドライン(powershellおよびcmd)ではEsc、ライン上でキーを押すと、プロンプトで入力したものはすべて削除されます。

Escbashプロンプトでキーを押しても何も起こらないことがわかりました。を押してから単語Escbackspace削除しますが、これは単語ごとに実行する必要があります。

私はBashを少しずつ学んでいますが、時には行の途中で何かおかしいものを入力して、もう一度最初から入力する方が良いと感じています。これを行うにbackspaceは、今まで見つけた唯一の方法は押すことです。

職業はなんですか?

clearコマンドとCtrl-Lショートカットは知っていますが、端末全体をクリアすることについては話していません。ただのライン。


1
しばらく前に、スーパーユーザーに便利なreadlineキーボードショートカットのリストを投稿しました。それらも同様に役立つことがあります。(Readlineは、bashが行編集に使用するライブラリです。)
jw013

こんにちはjw013、素敵な編集をありがとう。:
Animesh

回答:


15

が必要ですkill-whole-lineが、これはデフォルトでbashにバインドされていません。backward-kill-lineCtrlX Backspace)とunix-line-discardCtrlU)は両方とも現在のポイントから行の先頭まで消去するため、行の末尾に移動してどちらかを使用します。


あなたは正しいです、それは何にも縛られていません。私はちょうどそれを使用してそれを見つけましたbind -P。私はCtrl-UそれCtrl-Yから唯一のオプションだと思う。
Animesh

Emacsエディターのキーシーケンスから多くのデフォルトバインディングが派生し、それらのバインディングも他の場所に表示されることがわかります。
Blrfl

@Blrflはコメントを拡張するために、これらのキーバインディングのほとんどがreadlineライブラリに抽象化されており、多数のコマンドラインプログラムが使用しているため、すべてが同様の行編集キーを持っています。
jw013


6

Ctrl+a行の先頭に移動し、行Ctrl+kの末尾まで削除します


^U最初に試してください。ほとんどのEmacsコマンドライン編集モードの実装では、すでに完全な行が削除されています。カーソルから左だけを削除する場合(GNU readlineなど)、^K後で押します。
ミラビロス

3

Ignacio Vazquez-Abramsの答えを少し拡張Escするkill-whole-lineEscは、次のコマンドでto をバインドすることにより、bash のキーから(ほぼ)Windowsのような動作を得ることができます。

bind '"\e":kill-whole-line'

~/.inputrcファイルに行を追加すると、セッション間でバインディングが保持されます。

ただし、bashは実際にはキーを別の変更キー(非永続AltまたはCtrlなど)として使用するため、これは非常に非標準であることに注意してくださいEsc。既存のキーバインディングのリスト(を使用bind -P)を見ると、「\ e」で始まるキーの組み合わせにバインドされたコマンドがいくつか表示される可能性があります(例:

"\eb": backward-word

組み合わせ設定されEsc+ B、むしろのような-最新の単語先頭にカーソルバックを移動するCtrl+ あなたが解放し続けなければならないことを除いて、Esc(だけでなく、Bあなたがより多くの行に何度もそれをしたい場合は、もちろんを、) )。

そして、それが私があなたが得る振る舞いがほとんど Windowsのようなものであると言った理由を説明しEscます。したがって、それをにバインドするとkill-whole-line、押す(または、離す)後Esc、bashで行をクリアするまでに少し遅延があります。

ただし、そのいずれかを気にせず、別のキーストロークに自分を再訓練するよりも遅れて生きたい場合は、それを行うことができます。

(注:ここでの情報の多くは、この回答を読んで(リンクをたどって)結果として得たものです。)


1
これは非常に役に立ちました、感謝し、宣伝どおり多かれ少なかれ機能します。しかし、行末でDELを押すなど、他のコマンドが「無効に」実行されると、迷惑な動作が発生することがわかりました。これにより、行がクリアされ、[19;同様のエスケープコードに置き換えられます。最後に、私はマッピングを見つけ"\e\e"kill-whole-line素敵な妥協案(すなわち、ラインをクリアするために二回Escキーをタップ)。
j_random_hacker

@j_random_hacker:うーん、私はそれが好きです。Escとにかく何度かヒットすることがあるので、試してみるかもしれません。現在はCtrl+ にバインドしDelていますが、覚えていません。
ウィルソンF
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.