命令提示符中的(arg:n)是什么意思?


10

在Codecademy的“ 命令行课程”上,当尝试Alt+Shift+#在命令提示符下使用键盘快捷键(应该在当前行注释)时,它将提示符从切换为$(arg: 3)而不是在行首添加破折号。Alt+Shift+@将会(arg: 2)改为显示等。请参见下面的屏幕快照的最后一行。我打之前,Alt+Shift+#这只是$

屏幕截图

该快捷方式在我的机器上可以正常工作。

  1. 这是什么(arg: n)东西
  2. 键盘快捷键取决于什么才能起作用?键盘布局?操作系统发行版?终端模拟器?默认CLI?什么?

Answers:


15

输入数字参数时,这是readline库的提示。通过AltShift@在键盘上输入,您显然可以输入Alt2到的映射M-2,默认情况下,该映射digit-argumentreadline中运行,并开始输入数字参数。如果您再按Alt3AltShift#映射到您的情况),您将看到提示更改为(arg: 23);您可以继续使用任何数字Alt组合。

这些自变量用于某些readline函数,例如yank-nth-arg。要查看实际效果,请运行

echo Hello my friend

然后按,Alt2然后按CtrlAltY;您会看到(arg: 2)提示出现,然后消失,前一个命令的第二个参数(“ my”)将附加到当前命令行中。

有关详细信息,请参见上面的链接文档。Bash使用readline来处理其输入;其他炮弹将不会显示相同的行为。

一些终端仿真器出于自己的目的使用其中的一些组合键。例如,在GNOME终端中,Alt-digit切换到第n个标签。您需要禁用这些组合才能使用readline函数。

在您的情况下,Codecademy基于Web的终端仿真器似乎不能AltShift很好地处理组合。如果不需要数字参数快捷方式,则可以通过运行以下命令来重新设置它们的用途:

bind Meta-3:insert-comment

理论上,您应该可以通过添加以下内容来永久存储此内容

Meta-3: insert-comment

到一个~/.inputrc文件,但我无法在Codecademy上使用它。


1
谢谢。如何禁用readline或仅使用键盘快捷方式注释当前命令行?
user331380

您正在使用哪种终端仿真器?
斯蒂芬·基特

我想知道如何在Codecademy上进行操作,但是我没有右键单击并找出答案的方法。ps -o 'cmd=' -p $(ps -o 'ppid=' -p $$)输出/usr/local/bin/ein -service-port 4006 -http-port 4007。这有帮助吗?
user331380

1
@ user331380可能您bash在Codeacademy 上使用shell。在交互式Shell中,您可以使用来启动新实例bash --noediting。这将禁用readline,但请记住,readline库负责许多行编辑功能,这可能会使交互式使用shell稍微不舒服
Sergiy Kolodyazhnyy

值得一提的是,当您在普通模式下简单地键入数字来表示您键入的下一个普通模式命令的数字参数时,vi键绑定也会发生这种情况。
JoL
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.