Por que, no vim, o primeiro operando é baseado em movimento (m) e o último operando é baseado em 0?

2

Dado o seguinte arquivo

1
2
3
4
5

Quando digo :1m3

o arquivo se parece com isso

2
3
1
4
5

Mas quando digo :3m1 , parece que

1
3
2
4
5

Eu pensei que o 3 deveria ser antes de 1. Por que é assim?

    
por syss 04.03.2015 / 12:01

2 respostas

2

Como Stéphane Chazelas apontou usando a ajuda do vim com :h :m , ele afirma o seguinte:

:[range]m[ove] {address}                        *:m* *:mo* *:move* *E134*
                    Move the lines given by [range] to below the line
                    given by {address}.

Portanto, ao mover a linha 1 abaixo da linha 3, o resultado é o indicado na pergunta. Mas se alguém quiser mover a linha 3 para a primeira linha, ela deve ser movida abaixo da linha 0

    
por 04.03.2015 / 12:14
1

Comandos como :copy e :move colocam o alvo abaixo da linha dada por {address} . Você pode usar um endereço de 0 para passar para a primeira linha. Alguns comandos (como :put ) também suportam uma reversão de antes / depois via :put!

    
por 04.03.2015 / 12:14

Tags