Atualmente, tenho dois métodos semelhantes para substituir o buffer inteiro por outro texto (digamos na área de transferência).
Método 1:
excluir todas as linhas:
:%d
.colar texto: "+P(ou similar
:put+
:).
Método # 2:
seleccionar visualmente todas as linhas: ggVG.
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 :change
comando. 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?
fonte
1,$s/\_./\=@+
não é uma solução: P,:%d|put+
está mais perto, mas não chega.1,$s/\_.*/\=@+
, onde\_.
corresponde a qualquer caractere, incluindo nova linha.:%d|put+
se encaixa na conta. É curto e memorável. O outro comando é muito misterioso para lembrar e digitar corretamente.Respostas:
Você pode fazer
ggvG<CTRL-G>
para selecionar visualmente todo o buffer e inserirSelect-mode
. Essa é a maneira mais fácil de substituir o buffer pelo texto que você planeja digitar. Você pode até fazer umSelect-mode
mapeamento para:smap
resolver o seu problema.fonte
Uma maneira de substituir todo o buffer com a área de transferência pode ser via comando externo, por exemplo:
Veja também: Compartilhamento da área de transferência do Mac OS X
Ou usando a substituição:
Como alternativa, use
:%d|put+
(como já sugerido nos comentários).fonte