OS Xの端末からコマンドをクリア


24

ターミナル 'mv * .jpg .. \ photos'でコマンドを入力したとします。入力しているときに、このコマンドをまったく実行したくないことがわかります。ステートメント全体を削除したいだけです。画面全体をクリアしたり、bash履歴を削除したりしたくないので、現在の行を中止して消去したいだけです。

キーボードショートカットはありますか、それとも各文字を実際に削除する必要がありますか?

回答:


36

bashを使用していると仮定して、Ctrl+を使用しますU


ありがとう!それをやった。どこかに文書化されたキーボードショートカットのフォーマットリストはありますか?
ポールアレクサンダー


2
これはzshellでも機能しました。
LandonSchropp

1
これは、カーソルが行の終わりにある場合にのみ機能します。カーソルが先頭にあるような状況では、CTRL-Kを使用する必要があります
Jarrod Nettles

スクリプトでこれをどのように引き起こしますか?
ジョニー14年

7

コマンドラインを入力してからbashを含むそのラインを実行するのを待つ多くのプログラムは、Ctrl+ Cを使用して「現在のタスクを中止してメインプロンプトに戻る」ことを意味します。

bashを含むいくつかのプログラムは、Ctrl+ UOS Xの端末からコマンドをクリア)を使用して、「行の先頭をカーソルまで消去」(または「行全体を消去」)することを意味します。

bashでは、Ctrl+ CCtrl+の違いにUは次のものがあります。

  • あなたは、元に戻すことができますCtrl+ Uではなく、Ctrl+ C
  • Ctrl+ Uは、カーソルの後の行の一部を保持します(存在する場合)。
  • Ctrl+ U影響を受けたテキストを画面から消去します。Ctrl+ Cは、現在の行の下に新しいプロンプトを表示します。

コマンドの入力を止めて、後で実行するためにシェル履歴に入力したい場合があります。便利なトリックは#、行の先頭にaを入れて実行することです。行はコメントになっているため、何もしません。bashには、単一キーのショートカットAlt+があり#ます。


2

readlineおそらくkill-whole-lineカーソルの前の部分だけを殺すのではなく、行全体を殺すと呼ばれるキーストロークにバインドされていない関数があります(unix-line-discardこれはやや誤称でCtrl-にバインドされていますu)。

これを利用可能なキーストロークにバインドできます。私は好きですShiftAlt- Uそれは関連する機能だからです。このキーストロークはバインドされdo-lowercase-versionている場合があります。つまり、シフトされていないバージョンが実行することはすべて実行されます(この場合upcase-word)。実際に2つのキーは必要ないので、その1つを使用しましょう。

この方法でバインディングを作成することにより、コマンドラインで試してみることができます。

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

または、次の行を~/.inputrcファイルに追加して永続化します。

"\eU":kill-whole-line

元に戻すCtrl- uまたはShiftAlt- U(または元に戻すことができ、任意の動作)、プレスCtrl- - Shift_下線)またはCtrl- x Ctrl- u(2つのキーストローク)。または、を押して、削除したものを貼り付ける(ヤンク)ことができますCtrl- yそのテキストの複数のコピーが必要な場合は、繰り返すことができます。

ところで、カーソルから行末までのテキストを削除したい場合は、Ctrl- を押しますk。だからではなく、結合は、上記のことを、あなたは押すことで、全体のラインを殺すことができますCtrl- - 。u Ctrl kこれらのキーストロークの2番目で殺された部分だけがキルバッファーに保存されますが、2回元に戻すことで両方を回復できます。

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