Copie, exclua e cole no Vim

14

Eu comecei com o Vim ontem e estou tendo problemas para entender o copy & colar. Eu entendo para copiar eu entrar no modo visual, destaque e, em seguida, arrancar. Em seguida, passo para a linha que desejo colar, mas com mais frequência, não preciso excluir algum texto dessa linha. Eu faço isso usando x ou dw . Isso resulta em minha cópia original sendo sobrescrita (como x e dw parecem reduzir). Como posso contornar isso?

Para colocá-lo em um exemplo

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

Portanto, com o código acima eu copio $this->foo->property , então eu gostaria de ir para a linha 2, excluir $foo e colar. Eu problema é quando eu excluir $foo da linha 2, isto é, então, o que é colado em vez de $this->foo->property .

    
por Kazark 23.12.2011 / 15:53

5 respostas

14

Dê uma olhada em :h copy-move . O padrão yank ou delete entra em um lugar chamado registrador (um registrador chamado " ). Se você precisar excluir algum texto antes de colar, será necessário evitar sobrescrever o registrador x, como você descobriu. Felizmente, você pode usar qualquer outra letra ou número para nomear um registro diferente.

  • "ayy (insira uma linha no registro a )
  • x , dd , etc. (exclua algum texto no registrador não nomeado, " )
  • "ap (cole o texto do registro a )
por 23.12.2011 / 16:05
8

Se o problema é que você só precisa substituir alguns text por alguns text2 , apenas realce e gere text2 . Em seguida, destaque text e pressione p ou P para colar text2 no lugar de text .

Um guia mais rápido para alguns comandos vim comuns é o link

Aproveite!

Editar: observe que p cola o texto após o cursor e P antes do cursor.

    
por 23.12.2011 / 16:00
7

Você pode copiar em um registro nomeado "ayw , excluir e, em seguida, colar o registro nomeado "ap .

No entanto, normalmente é mais fácil apenas alterar a ordem em que você faz as coisas. Faça a colagem e, em seguida, faça a exclusão ou exclua e depois copie / cole.

Como alternativa, você pode excluir o registro de buraco negro "_d . Consulte o link

    
por 23.12.2011 / 16:03
3

Você tem vários registros que você pode usar para armazenar diferentes valores de texto. Se você quiser salvar o texto em um registrador diferente de onde o texto deletado irá (isto é, usando x ou d w ), do que usar o seguinte:

Para salvar o texto no registro a :

  • pressione " a [comando yank and movement] (salva 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 no teclado e cada número. A exclusão de texto não usará esses registros, portanto, o texto permanecerá no registro até que você termine sua sessão ou coloque algo diferente nela.

    
por 23.12.2011 / 16:10
0

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

Se você está falando sobre como modificar o texto copiado, primeiro copie e apague as partes.

E se você quiser copiar, modifique o original e depois cole, Então você pode usar outro registro. Como "2y , então modifique, depois vá para outro lugar e "2p .

    
por 23.12.2011 / 15:56

Tags