En Linux, editando file_Ben vim quiero agregar la línea 10-25 file_A. Ejemplo: uno tiene un conjunto completo de documentos HTML con el mismo encabezado y sí, uno podría crear una plantilla y comenzar desde allí, pero aún así:
Estoy buscando una manera simple [y elegante] de insertar un rango de líneas de un archivo y agregarlo al archivo que estoy editando actualmente. En vim.
Las soluciones que he encontrado hasta ahora, pero no son exactamente lo que estoy buscando, son
- dentro
file_Bdel comando:read file_Aagregará * todo el archivo_A * en el archivo_B. Demasiado - hay copiar y pegar dentro de vim, pero para esto debe haber abierto
file_A - dentro del archivo_A
:10,25w! file_B'enviará' el rango de líneas dado afile_B.
Esto parece bastante parecido a copiar y pegar - se pueden abrir varias ventanas en vim
Pero como trabajo en una pantalla de 8 pulgadas, varias ventanas dificultan la orientación
Como no pude encontrar una solución cómoda, me pregunto si simplemente entendí mal algo o las formas que encontré hasta ahora se usan comúnmente y se toman como la forma estándar.
linux
vim
copy-paste
erch
fuente
fuente

vim. Pero esto parece fuera de alcance. Y realmente me pregunto si esto solo se puede lograr a través de comandos externos, porque hasta donde lleguévimahora, llegué a pequeñas restricciones hasta aquí.Respuestas:
La mejor solución que se me ocurre es llamar externamente
sedy combinar eso con:read !fuente
:res la abreviatura dereadvim. No tengo conocimiento acerca desedcómo usarlo. Por supuesto, lo reemplacéfileBcon el archivo real :):10retc. colocará el contenido de la línea diez en [mientras exista]. Funciona como un encanto ahora. Excelente. ¡Muchas gracias!:r!sed 10,25\!d. Tenga en cuenta que no necesita las-ecomillas, por lo que también puede escribirlas:r!sed -n 10,25ppara abreviar.:r sed '10,$\!d;25q'para evitar leer todo el archivo.