En Linux, editando file_B
en 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_B
del comando:read file_A
agregará * 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évim
ahora, llegué a pequeñas restricciones hasta aquí.Respuestas:
La mejor solución que se me ocurre es llamar externamente
sed
y combinar eso con:read !
fuente
:r
es la abreviatura deread
vim. No tengo conocimiento acerca desed
cómo usarlo. Por supuesto, lo reemplacéfileB
con el archivo real :):10r
etc. 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-e
comillas, por lo que también puede escribirlas:r!sed -n 10,25p
para abreviar.:r sed '10,$\!d;25q'
para evitar leer todo el archivo.