在 Codecademy 上命令行课程,当尝试在命令提示符中使用键盘快捷键Alt+Shift+#
(应该注释当前行)时,它将提示符从 切换$
为(arg: 3)
,而不是在行首添加破折号。Alt+Shift+@
将使其显示(arg: 2)
,等等。请参阅下面屏幕截图中的最后一行。在我击中之前,Alt+Shift+#
它只是$
。
该快捷方式在我的机器上运行良好。
- 这是什么
(arg: n)
? - 键盘快捷键依赖什么来工作?键盘布局?操作系统发行版?终端模拟器?默认 CLI?什么?
答案1
这是当您输入数字参数时 readline 库的提示。通过AltShift@在键盘上打字,您显然正在输入Alt2哪个映射到M-2
,哪个运行digit-argument
在阅读线默认情况下,并开始输入数字参数。如果您随后按Alt3(AltShift#在您的情况下对应),您将看到提示更改为(arg: 23)
;您可以继续使用任意Alt数字组合。
这些参数用于某些 readline 函数,例如yank-nth-arg
.要查看实际效果,请运行
echo Hello my friend
然后Alt2按CtrlAltY;您将看到(arg: 2)
提示出现,然后消失,并且上一个命令的第二个参数(“my”)将被附加到您当前的命令行。
有关详细信息,请参阅上面的链接文档。 Bash 使用 readline 来处理其输入;其他 shell 不会显示相同的行为。
一些终端仿真器使用其中一些组合键来达到自己的目的;例如在 GNOME 终端中,Alt -digit 切换到n选项卡。您需要禁用这些组合才能使用 readline 函数。
就您而言,Codecademy 基于网络的终端模拟器似乎不能AltShift很好地处理组合。如果您不需要数字参数快捷方式,您可以通过运行来重新调整它们的用途
bind Meta-3:insert-comment
理论上你应该能够通过添加来永久存储它
Meta-3: insert-comment
到一个~/.inputrc
文件,但我无法让它在 Codecademy 上工作。