A maneira mais eficiente de substituir todo o buffer?

10

Atualmente, tenho dois métodos semelhantes para substituir o buffer inteiro por outro texto (digamos na área de transferência).

Método 1:

  1. excluir todas as linhas: :%d.

  2. colar texto: "+P(ou similar :put+:).

Método # 2:

  1. seleccionar visualmente todas as linhas: ggVG.

  2. colar texto: "+P.

No entanto, eu não conseguia encontrar uma maneira de fazer um único comando para fazer isso. O mais próximo que encontrei é o :changecomando. Mas isso não parece funcionar bem com registros. Claro que posso criar alguma função e / ou mapear uma chave para fazer isso. Mas antes que eu pudesse fazer todas essas personalizações, quero ter certeza:

Existe algum comando interno para substituir um intervalo de linhas por outro texto? Como, você poderia :%replace+substituir o buffer inteiro pelo texto na área de transferência?

Naitree
fonte
2
Não sei nada do que estou pensando, mas se você faz muito isso, por que não criar um mapeamento / comando?
Matt Boehm
5
Hmm, 1,$s/\_./\=@+não é uma solução: P, :%d|put+está mais perto, mas não chega.
Runium
11
Esqueci um asterisco após o ponto ... 1,$s/\_.*/\=@+, onde \_.corresponde a qualquer caractere, incluindo nova linha.
Runium
2
Você precisa reutilizar o buffer ou seria aceitável iniciar um novo buffer?
200_success
3
Eu acho que Sukminder :%d|put+se encaixa na conta. É curto e memorável. O outro comando é muito misterioso para lembrar e digitar corretamente.
Lie Ryan

Respostas:

2

Você pode fazer ggvG<CTRL-G>para selecionar visualmente todo o buffer e inserir Select-mode. Essa é a maneira mais fácil de substituir o buffer pelo texto que você planeja digitar. Você pode até fazer um Select-modemapeamento para :smapresolver o seu problema.

Aaron Massey
fonte
0

Uma maneira de substituir todo o buffer com a área de transferência pode ser via comando externo, por exemplo:

:%!pbpaste
:%!echo my_text

Veja também: Compartilhamento da área de transferência do Mac OS X

Ou usando a substituição:

:%s/\_.*/\=@+/
:%s/\_.*/my text/

Como alternativa, use :%d|put+(como já sugerido nos comentários).

kenorb
fonte