Substitua uma linha pela linha que tenho no buffer no vi

6

Eu cc ou dd para copiar uma linha no meu buffer de pasta. Então eu vou para um novo local.

Eu quero substituir uma linha que vejo. Então eu digito p Abaixo dd .

Existe uma maneira mais fácil (menos pressionamentos de tecla)?

    
por Michael Durrant 14.07.2012 / 20:25

4 respostas

8

Você pode digitar V para selecionar a linha e, em seguida, p para substituí-la.

    
por 14.07.2012 / 21:31
3

Outra maneira de fazer isso seria "_ddp

"_dd exclui a linha atual para o buffer nulo. Isso não acaba com o que você acabou de copiar, o que eu achei muito útil! O p cola a linha que você copiou anteriormente.

Não pode ser mais curto em termos de pressionamentos de teclas, mas saber que isso é uma opção pode ser muito útil!

    
por 14.07.2012 / 23:13
2

Angus e Thor têm as respostas curtas cobertas, então aqui estão algumas explorações de bônus.

Se, por algum motivo, você quiser excluir antes de colar, poderá aproveitar os registros numerados. O "0 register contém o texto capturado pelo último y ou Y , mas não é excluído. Os registros "1 a "9 armazenam as últimas 9 exclusões / cortes que você fez. Então:

  • Se você comprasse yy , poderia substituir por dd"0P .
  • Se você cortar com dd ou cc , poderá substituir por dd"2P . (Não dd"1P porque o dd preenche "1 .)

Experimente :help "0 para mais informações detalhadas.

    
por 14.07.2012 / 21:38
1

Suponha que você queira substituir a linha 1 por 3 do que você poderia fazer :1m3|2d

Isso efetivamente move a linha 1 para a linha 3 e remove a linha 2 (ou seja, a linha antiga 3)

    
por 14.07.2012 / 22:30

Tags