在vim中,为什么要:-1j
和上面这一行连接呢?
例如:g/^ /-1j
连接所有以空格开头的行。
当你理解命令的产生方式时,你会更容易记住它们,在这种情况下,我期望:g/^ /-1J
-1
移至上面一行并J
与下面一行合并。
答案1
您不能在命令行上使用普通命令照原样。
在 中:g/^ /-1j
,j
是 的缩写:join
:你向上移动一行(-1
,可能是-
)然后执行:join
。
在 中:g/^ /-1J
,J
对 Vim 没有任何意义:您正在使用超出其上下文的正常模式命令,因此,基本上,-1
除了回显清晰的错误消息之外,它什么也不做。
Vim 期望一个 Ex 命令,而不是一个正常模式命令。
您可能感到困惑,因为冒号只需要一次,所以您无法识别 Ex 命令。如果我们添加几个冒号,完整命令对您来说可能更有意义:
:g/^ /:-1:j
要在命令行上使用正常模式命令,请使用:norm
:
:g/^ /-1norm J
答案2
中有两种类型的命令vi
。有些命令可以直接从文件任何位置的命令模式调用(我不确定这些命令是否有特定的名称),有些命令专门ex
针对行(而不是字符)进行操作,并且需要:
字符来调用它们。
通常,只有ex
命令才能与命令一起使用:g
。