在 vim 中,为什么用 :-1j 与上面的行连接?

在 vim 中,为什么用 :-1j 与上面的行连接?

在vim中,为什么要:-1j和上面这一行连接呢?

例如:g/^ /-1j连接所有以空格开头的行。

当你理解命令的产生方式时,你会更容易记住它们,在这种情况下,我期望:g/^ /-1J

-1移至上面一行并J与下面一行合并。

答案1

您不能在命令行上使用普通命令照原样

在 中:g/^ /-1jj是 的缩写:join:你向上移动一行(-1,可能是-)然后执行:join

在 中:g/^ /-1JJ对 Vim 没有任何意义:您正在使用超出其上下文的正常模式命令,因此,基本上,-1除了回显清晰的错误消息之外,它什么也不做。

Vim 期望一个 Ex 命令,而不是一个正常模式命令。

您可能感到困惑,因为冒号只需要一次,所以您无法识别 Ex 命令。如果我们添加几个冒号,完整命令对您来说可能更有意义:

:g/^ /:-1:j

要在命令行上使用正常模式命令,请使用:norm

:g/^ /-1norm J

答案2

中有两种类型的命令vi。有些命令可以直接从文件任何位置的命令模式调用(我不确定这些命令是否有特定的名称),有些命令专门ex针对行(而不是字符)进行操作,并且需要:字符来调用它们。

通常,只有ex命令才能与命令一起使用:g

相关内容