No Linux, editando file_B
no vim, quero adicionar a linha 10-25 de file_A
. Exemplo: um tem um conjunto inteiro de documentos HTML com o mesmo cabeçalho e sim, pode-se criar um modelo e começar a partir daí, mas ainda assim:
Estou procurando uma maneira simples [e elegante] de inserir um intervalo de linhas de um arquivo e adicioná-lo ao arquivo que estou editando no momento. No vim.
As soluções que encontrei até agora, mas não são exatamente o que estou procurando, são
- dentro
file_B
do comando:read file_A
adicionará * todo o arquivo_A * no arquivo_B. Demais - existe copiar e colar dentro do vim - mas, para isso, deve-se abrir
file_A
- dentro de file_A
:10,25w! file_B
'enviará' o intervalo de linhas especificado parafile_B
.
Isso parece muito próximo de copiar e colar - é possível abrir várias janelas no vim
Mas, como trabalho em uma tela de 8 polegadas, várias janelas dificultam a orientação
Como não consegui encontrar uma solução confortável, pergunto-me se apenas entendi mal alguma coisa ou as maneiras que encontrei até agora são comumente usadas e tomadas como a maneira padrão.
linux
vim
copy-paste
erch
fonte
fonte
vim
. Mas isso parece fora de alcance. E realmente me pergunto se isso só é possível através de comandos externos, porque, atévim
agora, cheguei a poucas restrições até aqui.Respostas:
A melhor solução que posso encontrar é ligar
sed
e combinar externamente isso com:read !
fonte
:r
é a abreviação deread
in vim. Eu não tenho conhecimento sobresed
e como usá-lo. Claro, eu substituídofileB
com o arquivo real :):10r
etc. colocará o conteúdo da linha dez em [enquanto houver ]. Funciona perfeitamente agora. Ótimo. Muito obrigado!:r!sed 10,25\!d
. Observe que você não precisa das-e
aspas ou das cotações, para que possa escrevê-las:r!sed -n 10,25p
também.:r sed '10,$\!d;25q'
para evitar a leitura do arquivo inteiro.