No vim, por que :-1j se junta à linha acima?

No vim, por que :-1j se junta à linha acima?

No vim, por que :-1jjuntar-se à linha acima?

por exemplo, :g/^ /-1jpara juntar todas as linhas que começam com um espaço.

Os comandos são mais fáceis de lembrar quando você entende como eles acontecem e neste caso eu esperava:g/^ /-1J

-1move para ir para a linha acima e Jjuntar-se à linha abaixo.

Responder1

Você não pode usar um comando normal na linha de comandocomo é.

Em :g/^ /-1j, jé a abreviatura de :join: você sobe uma linha ( -1, pode ser -) e executa :join.

Em :g/^ /-1J, Jnão significa nada para o Vim: você está usando um comando de modo normal fora de seu contexto, então, basicamente, ele não faz nada depois, -1exceto ecoar uma mensagem de erro clara.

O Vim espera um comando Ex, não um comando de modo normal.

Sua confusão pode vir do fato de que os dois pontos são necessários apenas uma vez, portanto você não reconhece os comandos Ex. Se adicionarmos alguns dois pontos, o comando completo provavelmente faria mais sentido para você:

:g/^ /:-1:j

Para usar comandos do modo normal na linha de comando, use :norm:

:g/^ /-1norm J

Responder2

Existem dois tipos de comandos no vi. Existem comandos que podem ser invocados diretamente do modo de comando em qualquer lugar do arquivo (não tenho certeza se existe um nome específico para esses tipos de comandos), e existem comandos que vêm dele e exoperam especificamente em linhas (não em personagens) e exigem um :personagem para invocá-los.

Normalmente, apenas os excomandos podem ser usados ​​com o :gcomando.

informação relacionada