shell vi 模式打印(arg:重复):如何删除它?

shell vi 模式打印(arg:重复):如何删除它?

每当您在 shell 上处于 vi 命令模式并点击数字(例如 8)时,“(arg: 8)”就会显示在行的开头。有人知道如何让它不这样做吗?移动我正在输入的行会分散我的注意力。

代替:

(arg: 8) somecmd --itslong --reallylong

这:

somecmd --itslong --reallylong

答案1

当您处于命令模式vi(实际编辑器或 Bash 模式)时,按数字会输入一个参数(因此为“arg”),该参数通常用于设置执行以下命令的重复次数。为了避免这种情况,您应该在i按数字之前处于输入模式(例如按)。

示范:

如果您未处于 vi 模式,可以使用以下命令进入:

set -o vi

(可以通过进入emacs模式退出vi模式set -o emacs:)

现在,在 vi 输入模式下键入如下命令:

echo abcdefghijk4

您会注意到末尾有一个数字“4”,如上所示。

现在按Esc。光标将向左移动一个字符,您现在处于命令模式。

按一个数字,比如说“3”。现在你会看到这个:

(arg: 3) echo abcdefghijk4

现在按大写 X。您应该看到:

echo abcdefgh4

三个字符(“ijk”)已被删除,因为您告诉 Readline(Bash 的命令行输入编辑器)“擦掉”3 个字符。

现在按i和 任意数字。该数字被插入到命令行中光标所在的位置。

答案2

有问题的代码位于:lib/readline/misc.c

删除第 109 行和第 241 行将删除该消息。

相关内容