每当您在 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 行将删除该消息。