ターミナル 'mv * .jpg .. \ photos'でコマンドを入力したとします。入力しているときに、このコマンドをまったく実行したくないことがわかります。ステートメント全体を削除したいだけです。画面全体をクリアしたり、bash履歴を削除したりしたくないので、現在の行を中止して消去したいだけです。
キーボードショートカットはありますか、それとも各文字を実際に削除する必要がありますか?
ターミナル 'mv * .jpg .. \ photos'でコマンドを入力したとします。入力しているときに、このコマンドをまったく実行したくないことがわかります。ステートメント全体を削除したいだけです。画面全体をクリアしたり、bash履歴を削除したりしたくないので、現在の行を中止して消去したいだけです。
キーボードショートカットはありますか、それとも各文字を実際に削除する必要がありますか?
回答:
bashを使用していると仮定して、Ctrl+を使用しますU。
コマンドラインを入力してからbashを含むそのラインを実行するのを待つ多くのプログラムは、Ctrl+ Cを使用して「現在のタスクを中止してメインプロンプトに戻る」ことを意味します。
bashを含むいくつかのプログラムは、Ctrl+ U(OS Xの端末からコマンドをクリア)を使用して、「行の先頭をカーソルまで消去」(または「行全体を消去」)することを意味します。
bashでは、Ctrl+ CとCtrl+の違いにUは次のものがあります。
コマンドの入力を止めて、後で実行するためにシェル履歴に入力したい場合があります。便利なトリックは#
、行の先頭にaを入れて実行することです。行はコメントになっているため、何もしません。bashには、単一キーのショートカットAlt+があり#ます。
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回元に戻すことで両方を回復できます。