Como posso arrancar várias linhas em um registro?

37

Eu quero arrancar várias linhas em um único registro no vim, para colar facilmente diferentes modelos de texto em um documento.

Por exemplo, "iyy puxa apenas a linha atual, se eu tentar selecionar várias linhas no modo visual, ela não é gravada no registro.

Alguma sugestão?

    
por ryz 17.01.2011 / 16:51

5 respostas

53

Use 3Y para arrancar 3 linhas no registro padrão; "i3Y para puxar para o registrador i.

Além disso, minha maneira favorita é não contar as linhas que quero arrancar, mas selecioná-las no modo visual via V e mover os comandos e, em seguida, pressionar y para arrancar ou "_y para puxar um registro.

Além disso, acabei de tentar selecionar várias linhas no modo Visual Line e puxar para o registrador não padrão, por exemplo, Vjjj"oy - e funciona.

    
por 17.01.2011 / 17:10
21

De qualquer lugar dentro do arquivo, você pode usar o seguinte.

:2,5y a

Yank lines 2 - 5. NO REGISTRO de um

:7pu a

Cole um registro na linha 7.

    
por 10.04.2013 / 20:45
8

Use m para marcar o início, com um nome de buffer (assim, você pode digitar mx ). Mova o cursor para baixo, para onde deseja parar a cópia, e digite y'x (ou d'x se você estiver recortando e colando). Em seguida, mova para o ponto em que deseja colar e digite p .

A folha de dicas do comando Vim

    
por 17.01.2011 / 16:57
6

Você prefixar o comando com um número para obter quantas linhas operar. Você também pode usar um 'objeto de texto' (como ']' para o bloco, e ')' para o parágrafo) - isso funcionaria em várias linhas contextualmente - o padrão é geralmente uma única linha. Por exemplo, "r5yy arrancaria cinco linhas começando no cursor no registro 'r'. (Ou você pode digitar :.,+4y r para fazer o mesmo no modo ex). Você também pode combinar números com objetos de texto; "r10y) .

    
por 17.01.2011 / 17:10
1

É possível extrair várias linhas caso seja uma última ocorrência de pesquisa.

Por exemplo, considerando os seguintes um padrão multilinhas não ganancioso :

/start\_.\{-}end/norm gn"iy

você terá seu padrão de várias linhas (entre start e end ) no seu registro @i (impressão por echo @i ).

Relacionados: Como imprimir uma partida com várias linhas? na Vi

    
por 17.10.2015 / 22:10

Tags