コマンドプロンプトの(arg:n)はどういう意味ですか?


10

CodecademyのコマンドラインコースAlt+Shift+#で、コマンドプロンプトでキーボードショートカット(現在の行にコメントを付けることになっている)を使用しようとすると、行の先頭にダッシュを追加する代わりに、プロンプトをから$に切り替えます(arg: 3)。代わりAlt+Shift+@に表示さ(arg: 2)れます。以下のスクリーンショットの最後の行を参照してください。私がヒットAlt+Shift+#する前にそれはちょうどだった$

スクリーンショット

ショートカットは私のマシンで正常に動作します。

  1. これは何(arg: n)ですか?
  2. キーボードショートカットはどのように機能しますか?キーボード・レイアウト?OSディストリビューション?端末エミュレータ?デフォルトのCLI?何?

回答:


15

これは、数値引数を入力しているときのreadlineライブラリのプロンプトです。AltShift@キーボードでタイプすると、Alt2どのマップに対応するかを入力しているように見えます。M-2これはデフォルトdigit-argumentreadlineで実行され、数値引数の入力を開始します。次にAlt3AltShift#あなたの場合はにマップされます)を押すと、プロンプトがに変わり(arg: 23)ます 任意のAlt数字の組み合わせで続行できます。

これらの引数は、特定のreadline関数、たとえばなどに使用されyank-nth-argます。この動作を確認するには、次を実行します。

echo Hello my friend

次にを押しAlt2てからCtrlAltY; あなたが表示されます(arg: 2)プロンプトが消えた後、表示され、前のコマンド(「私」)の第2引数は、現在のコマンドラインに追加されます。

詳細については、上記のリンクされたドキュメントを参照してください。Bashはreadlineを使用して入力を処理します。他のシェルは同じ振る舞いを示しません。

一部の端末エミュレーターは、独自の目的でこれらのキーの組み合わせのいくつかを使用します。たとえば、GNOMEターミナルでは、Alt-digitはn番目のタブに切り替わります。readline関数を使用するには、これらの組み合わせを無効にする必要があります。

あなたの場合、CodecademyのWebベースのターミナルエミュレータはAltShift組み合わせをうまく処理できないようです。数値引数のショートカットが必要ない場合は、次のコマンドを実行してそれらを再利用できます

bind Meta-3:insert-comment

理論的には、追加することでこれを永久に保存できるはずです

Meta-3: insert-comment

~/.inputrcファイルが、私はそれがCodecademy上で動作するように得ることができませんでした。


1
ありがとうございました。readlineを無効にする方法、またはキーボードショートカットを使用して現在のコマンドラインにコメントするにはどうすればよいですか?
user331380

どのターミナルエミュレータを使用していますか?
Stephen Kitt

Codecademyでそれを行う方法を知りたいのですが、右クリックして調べる方法がありません。ps -o 'cmd=' -p $(ps -o 'ppid=' -p $$)出力/usr/local/bin/ein -service-port 4006 -http-port 4007。これは役に立ちますか?
user331380

1
@ user331380 Codeacademyでbashシェルを使用している可能性があります。対話型シェルでは、を使用して新しいインスタンスを開始できますbash --noediting。これはreadlineを無効にしますが、readlineライブラリは多くの行編集機能を担当しているため、シェルのインタラクティブな使用が少し不快になる可能性があることに
注意してください

入力する次の通常モードコマンドの数値引数を表すために通常モードで数値を単に入力する場合にも、viキーバインディングで発生することを言及する価値があるかもしれません。
JoL
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.