キーの組み合わせを押した後にterminal / ttyに表示されるこの「(arg:1)」とは何ですか?


21

仮想端末で(誤って)Win+ 1を押して、

(arg: 1)

Win押し続ける限り、押した数字はすべて括弧内の数字に追加されます(例:Winand 1+ 4yields)(arg:14)

(リリース後Win)キーを押すと、その文字が数字の読み取り回数だけ印刷され、(arg: ...)式が標準プロンプトに置き換えられます。

誰がここで何が起こるか知っていますか?

回答:


24

これは数字引数であり、readlineライブラリの機能であり、次のものに組み込まれていbashます。

digit-argument (M-0, M-1, ..., M--)
    Add  this digit to the argument already accumulating, or start a
    new argument. M-- starts a negative argument.

この機能により、現在編集中のコマンドラインでテキストを簡単に追加または削除できます。書きたいとしましょうecho gggg

  1. Enterにecho続けてスペース
  2. Metaキー(WinAltおよび/またはEscあなたのために)を押して入力します4g

しかし、どれだけ頻繁に1文字を入力する必要があるので、これで何も節約できませんか?この機能は主にreadline コマンド用に設計されていますリファレンスマニュアルの8.2.1〜8.2.3章を参照してください(「C」はCtrlメタ、「M」はメタ)。

Metaとを使用して1つの単語を戻すことができますがB、複数の単語を一度に戻すにはどうしますか?Alt押し続けてB複数回押すか、digit引数を使用できます。

  1. コマンドラインに5単語前のタイプミスがあります。

    $ echo one two tree four five six seven
  2. Metaキーを押し、入力5してMetaおよびを押しBます。その他:

    $ echo one two ree four five six seven
  3. タイプミスを修正し、押しEnterて撮影するか、EndまたはCtrl+ Eを押して行末に移動します。

Metaとを押して1つの単語Backspaceを削除できますが、複数の単語を一度に削除したい場合はどうでしょうか?

  1. コマンドラインで単語を忘れました:

    $ echo one two four five six seven
  2. Metaキーを押し、入力4してMetaおよびを押しBackspaceます。

    $ echo one two 
  3. 欠落している単語に続けてスペースを入力し、Ctrl+ Yを押して、削除した内容を貼り付けます。その他:

    $ echo one two three four five six seven

あなたは正しい、あなたは何も削除せずに説明したようにそこに移動することもできます。私たちはLinuxを使用していますが、同じことを行うには常にいくつかの方法があります。

そして、「否定的な議論」とは何ですか?これは、同じことが、反対方向に、ようにメタ-2メタは、Backspaceコマンドラインの次の二つの単語を削除します。「しかし、Meta 1Meta Dを使用して同じことを行うこともできます!」

参考文献:


これはどのbashバージョンで出てきましたか?本当に便利に見えます。+1しました。
セルギーコロディアズニー

WSLにそれはだEsc
αғsнιη

1
うわー!私はあなたにそのような素晴らしい答えの誘因を与えてくれてうれしいです!!
ガントベルト

「認める」ことは何もありません。多くの場合、すでに知っていることについて話しているとき、私たち( 'I')は再び研究をしない傾向があります。あなたの研究により、この答えは非常に包括的です-情報源を含みます。
ガントベルト

1
すてきなのは、数字の引数がviのような編集モード()でも必要な変更を加えて機能することですset -o vi
ジェレミア
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.