No vim, por que é: -1j para unir com a linha acima?

0

No vim, por que é :-1j para se juntar à linha acima?

por exemplo. :g/^ /-1j para 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 surgiram e, neste caso, eu esperava :g/^ /-1J

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

    
por 79E09796 28.07.2014 / 18:25

2 respostas

4

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

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

Em :g/^ /-1J , J não significa nada para o Vim: você está usando um comando de modo normal fora de seu contexto, basicamente não faz nada após -1 , exceto 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 o cólon é necessário apenas uma vez, então você não está reconhecendo os comandos Ex. Se adicionarmos dois pontos, o comando completo provavelmente faria mais sentido para você:

:g/^ /:-1:j

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

:g/^ /-1norm J
    
por 28.07.2014 / 20:53
1

Existem dois tipos de comandos em vi . Existem os comandos que podem ser invocados diretamente do modo de comando em qualquer lugar do arquivo (não tenho certeza se há um nome específico para esses tipos de comandos) e há comandos que vêm de ex que operam especificamente em linhas (não em caracteres) e requerem um caractere : para invocá-los.

Normalmente, somente os comandos ex podem ser usados com o comando :g .

    
por 28.07.2014 / 19:13

Tags