Copie, exclua e cole no Vim

15

Eu comecei ontem com o Vim ontem e estou tendo problemas para entender copiar e colar. Entendo copiar, entro no modo visual, realce e depois puxo. Eu passo para a linha na qual desejo colar, mas com mais frequência não preciso excluir algum texto dessa linha. Eu faço isso usando xou dw. Isso resulta na substituição da minha cópia original (como xe dwaparenta ser cortada). Como contornar isso?

Para colocar em um exemplo

$foo = $this->foo->property;
thislineuses($foo);

Então, com o código acima que eu copio $this->foo->property, eu gostaria de ir para a linha 2, excluir $fooe colar. Eu problema é que quando eu excluir $fooda linha 2, é isso que é colado em vez de $this->foo->property.

Kazark
fonte

Respostas:

16

Dê uma olhada :h copy-move. O arranque ou exclusão padrão entra em um local chamado registro (um registro chamado "). Se você precisar excluir algum texto antes de colar, evite substituir o registro x, como descobriu. Felizmente, você pode usar qualquer outra letra ou número para nomear um registro diferente.

  • "ayy(coloque uma linha no registro a)
  • x, dd, Etc. (apagar algum texto no registo sem nome, ")
  • "ap(cole o texto do registro a)
Kristo
fonte
9

Se o problema é que você apenas precisa substituir alguns textpor outros text2, basta realçar e puxar text2. Destaque texte pressionep ou Ppara colar text2no lugar de text.

Um guia rápido para alguns comandos comuns do vim é http://www.catswhocode.com/blog/100-vim-commands-every-programmer-should-know

Desfrutar!

Editar: observe que pcola o texto após o cursor e Pantes do cursor.


fonte
isso é bom porque você não precisa pensar em registros intermediários para puxar. simplesmente funciona.
9118 Jon Schoning
7

Você pode copiar para um registro nomeado "ayw, excluir e colar do registro nomeado "ap.

No entanto, geralmente é mais fácil alterar a ordem em que você faz as coisas. Faça a colagem e exclua ou exclua e copie / cole.

Como alternativa, você pode excluir o registro do buraco negro "_d. Consulte /programming//q/54255/70863

Eric Bock
fonte
3

Você tem vários registros que podem ser usados ​​para armazenar valores de texto diferentes. Se você deseja salvar o texto em um registro diferente daquele para onde o texto excluído irá (por exemplo, do uso xoud w ), use o seguinte:

Para salvar o texto no registro a:

  • pressione " a[puxar e mover o comando] (salva o texto no registro a)
  • vá para onde você deseja colar o texto
  • pressione " a p(cole o texto do registro a)

Você pode usar um registro para cada uma das letras do teclado e cada número. A exclusão de texto não usará esses registradores; portanto, o texto permanecerá no registro até você terminar sua sessão ou colocar manualmente outra coisa lá.

Jason Down
fonte
0

Você não tem que destacar toda a linha, se você usar v(em oposição a V) Modo visual. Se é isso que você está pedindo.

Se você estiver falando sobre modificar texto copiado, copie primeiro e apague as partes.

E se você deseja copiar, modifique o original e cole. Em seguida, você pode puxar para outro registro. Como "2y, então modifique, depois vá para outro lugar e "2p.

Michael Krelin - hacker
fonte