como adicionar linhas a um registro vim sem sobrescrevê-lo

85

Eu gostaria de puxar uma linha em um registro: "{register}ymas sem substituir o que estava anteriormente no registro. Freqüentemente, preciso copiar linhas não contíguas em um registrador e, às vezes, gostaria de usar os registradores como uma pilha.

Exemplo:

line1
line2
line3

Quero copiar line1, colocando o cursor sobre ele e inserindo "ay, então continuo line3e faço "ay. Então, quando eu fizer "ap, AMBOS line1E line3serão colados.

Isso é possível sem plug-ins? com plugins?

Mapad
fonte
Ótimo para fazer uma lista rápida de definições no início do arquivo.
Joe McGrath

Respostas:

133

Se você quiser anexar a um registro nomeado, use seu caractere maiúsculo correspondente. ou seja, no seu exemplo:

"sim
"Ayy
"ap
MarkB
fonte
11
Existe alguma maneira possível de anexar a um registro sem nome? (o principal)
Zaffy
Para salvar as pessoas de uma página, visite ^^, IMO, é mais fácil usar o registro nomeado. Quando você digita "a pensar, 'usando o registro a ...'" A 'anexando ao registro a'
Rob Kielty,
12

Apenas para expandir a resposta de MarkB, você sabia que também pode usar marcadores para selecionar um bloco de texto para seu puxão?

Vá para a primeira linha do bloco que deseja arrancar e digite o comando de marca após selecionar uma letra como marcador, por exemplo

ma  (entered in command mode, i.e. no colon)

em seguida, vá para a parte inferior do bloco que deseja arrancar e digite o comando:

:'a,.ya A

esse comando significa pegar o bloco de texto da linha que contém meu marcador chamado de até a linha atual e colocá-lo no buffer a. Aplicam-se as mesmas regras que o MarkB mencionado, use o nome do buffer em letras minúsculas para sobrescrever o buffer. Use o nome do buffer em maiúsculas para anexar ao buffer. Portanto, neste caso, isso será adicionado ao conteúdo do buffer a.

NB O 'a' usado para o seu marcador não tem nada a ver com o 'a' usado para selecionar o seu registro. (AFAIK mas YMMV)

BTW 'a (apóstrofo a) refere-se à linha que contém o marcador a. `a (crase a) refere-se ao caractere sob o cursor quando você inseriu ma.

`ad`b (also entered in command mode)

é útil porque deleta o texto entre o caractere marcado com o marcador a até o caractere imediatamente anterior ao caractere que você marcou com o marcador b.

Rob Wells
fonte
'a, .ya A funciona, mas quando tento com o carrapato na frente de a -> `a, ele diz: E492: Não é um comando do editor:` a, .ya A. Teria ajudado apenas não usar uma letra outro do que um para o marcador no exemplo para que fique claro qual letra é qual coisa :)
justin w