Como posso puxar várias linhas para um registro?

44

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 será gravada no registro.

Alguma sugestão?

ryz
fonte
"se eu tentar selecionar várias linhas no modo visual, não será gravado no registro." <- Sério? Funciona para mim ...
Billy ONeal
e para mim também ...
ulidtko 17/01
ah ok, eu tentei com "iyv, bobo eu. deveria ser Vjjj" iy como ulidtko mencionado.
ryz

Respostas:

59

Use 3Ypara puxar 3 linhas no registro padrão; "i3Ypara puxar para o registro i.

Além disso, minha maneira favorita não é contar as linhas que quero puxar, mas selecioná-las no modo visual por meio de Vcomandos e movimentos e, em seguida, pressione ypara puxá-lo ou puxá-lo "_ypara um registro.

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

ulidtko
fonte
11
+1 - mas Vé o Modo de linha visual, vé o modo visual.
Billy ONeal
ok ok ok Modo de linha visual. %)
ulidtko
11
aceito de bom grado, o caminho mais rápido para mim ainda.
ryz
24

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

:2,5y a

Arranque as linhas 2 - 5. PARA REGISTRAR

:7pu a

Cole o registro na linha 7.

alock27
fonte
11
A pergunta, “como posso puxar várias linhas para um registrador ?” Mostre como esses comandos funcionam com os registradores.
10113 Scott
Espero que minha edição atenda sua solicitação.
alock27
Desculpe, não. A pergunta mencionou explicitamente "registrar" repetidamente, referiu-se a "cole facilmente modelos de texto diferentes" e deu um exemplo usando um registro não padrão.
12113 Scott
3
@ Scott minhas desculpas. Por que você simplesmente não disse: "Cara, verifique seu método com: reg. Você verá que ele não funciona". E eu ficaria tipo "Whoa, meu mal".
precisa saber é
11
Estava procurando uma maneira de puxar o arquivo who para o register + para copiar para a área de transferência do sistema. :% y + fez o truque, obrigado.
AlexMA #
10

Use mpara marcar o início, com um nome de buffer (para que você possa digitar mx). Mova o cursor para baixo para onde deseja parar de copiar e digite y'x(ou d'xse você está recortando e colando). Em seguida, mova para o ponto em que deseja colar e digite p.

A planilha de comandos do Vim

Nifle
fonte
Tem certeza de que não quer dizer que vnão m?
Billy ONeal
O @BillyONeal 'v' inicia o Modo Visual e permite que você faça a mesma coisa, 'm' é usado para "marcar" uma região.
Nifle
6

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

Arcege
fonte