Repetição através de linhas no vim

7

Eu tenho algumas linhas de texto assim:

firstName
lastName
email

Agora adiciono private readonly string ao início da primeira linha. Como repito essa edição para as outras linhas? (não visitar manualmente cada linha de curso) (BTW eu sei que isso poderia ser feito com um regex, mas eu estou procurando um "vi caminho", se possível)

Apenas no caso, estou usando VsVim

    
por Mauricio Scheffer 11.03.2011 / 21:44

6 respostas

7

Navegue até firstName no modo Normal e digite

qaIprivate readonly string <ESC>jq

Isto irá gravar a macro (no registro a ) de você adicionando "string readonly privada" ao começo da linha, então movendo uma linha para baixo. Se você quiser repetir essa macro duas vezes (repetindo, assim, o comando para as próximas duas linhas), no modo de comando, digite 2@a na linha lastName , que executará a macro mais duas vezes.

Este método cumpre sua exigência de "não visitar manualmente cada linha"; no entanto, é um pouco pesado para o seu aplicativo.

Se for a digitação de private readonly string à qual você se opõe, uma solução rápida é fazer sua edição na primeira linha, depois descer para cada linha que deseja editar e usar . no modo Normal. Isto irá repetir o seu último comando (neste caso, adicionando o texto à linha) sem problemas.

    
por 11.03.2011 / 22:16
7

Outra maneira de fazer isso é usar o modo de bloqueio visual :

  1. Comece com o cursor no início da primeira linha.
  2. Pressione Ctrl + v para entrar no modo de bloqueio visual.
  3. Pressione j para descer, estendendo a seleção para incluir as linhas desejadas.
  4. Pressione I para entrar no modo de inserção (prepending).
  5. Digite private readonly string .
  6. Pressione Esc . Isso fará com que você volte ao modo de comando, e o texto que você digitou será repetido em cada linha antes do início da sua seleção de bloco visual (neste caso, no início de cada linha, desde foi aí que você começou a seleção).
por 11.03.2011 / 22:41
6

: normal é ótimo (e mais curto) também:

:.,+2norm Iprivate readonly string 
  • .,+2 - daqui para 2 duas linhas abaixo (ou você poderia selecionar as linhas usando o modo visual shift + v e então digitando : para entrar em modo ex)
  • norm - digite esses comandos como se eu os tivesse digitado no modo normal (comando)
  • I(...) - insira a seguinte string no começo da linha
por 13.03.2011 / 19:56
2

Basta digitar "private readonly string" na primeira linha. Então, para o resto das 2 linhas digite 2 (caractere de ponto) como 2. da segunda linha.

    
por 17.03.2011 / 07:30
1

Experimente:

:%s/^/private readonly string /

Suponho que você poderia escrever um roteiro, mas por quê?

    
por 11.03.2011 / 21:58
0

Para fazer isso interativamente sem muita reflexão e preparação (caso você já tenha inserido o texto na primeira linha, mas depois perceba que precisa em várias linhas):

  1. Insira o texto como faria normalmente usando I na primeira linha.

  2. Ative o modo visual pressionando v ou V ou <c-v> .

  3. Pegue todas as linhas que você deseja aplicar a alteração. Nesse caso, jj serve.

  4. Acerte :norm . e, em seguida, insira.

por 27.11.2016 / 12:04

Tags