Escribir el área seleccionada para archivar

13

Me gustaría escribir un área visualmente seleccionada en un archivo.

Por ejemplo:

prefix [sample text
more text] suffix

[] es el bloque seleccionado que debe tomarse, lo que da como resultado un nuevo archivo que contiene:

sample text
more text

El wcomando normal usa líneas, por '<,'>w! /tmp/testlo que incluiría el prefijo / sufijo (y `<,`>w! /tmp/testno está permitido).

laktak
fuente

Respuestas:

8

Primero, copie (también llamado 'yank' en lenguaje vim) su selección visual en el registro de su elección. Por ejemplo, para copiar para registrar 'z', haga su selección visual y luego escriba "zy.

En el caso que proporcione, puede hacer esto sin mover el cursor, colocando el cursor en la primera llave cuadrada y luego escribiendo v%"zy.

Desglose: v-> iniciar la selección visual; %-> mover a la llave correspondiente; "z-> use el registro 'z'; y-> tirar (copiar) la selección (en este caso, en el registro 'z').

Una vez que haya copiado su selección visual para registrar 'z', vaya a la línea de comando y escriba

call writefile(getreg('z', 1, 1), "some-file")

Si desea agregar el texto, en lugar de sobrescribir, puede usar la bandera "a" de la siguiente manera

call writefile(getreg('z', 1, 1), "some-file", "a") 
muru
fuente
Entonces, ¿eso significa que no hay un comando incorporado que pueda hacer esto?
laktak
@laktak No es que pueda encontrar ... A split()? getreg(.., 1, 1)devuelve una lista, por split()lo que no es necesario.
muru
Gracias, eres demasiado rápido :) Me acabo de dar cuenta de mi error y edité el comentario mientras respondías.
laktak
3

También puedes copiar tu contenido y crear una nueva ventana

Ctrl-w n ........... create a new window
p .................. paste

Entonces puedes guardar como quieras

SergioAraujo
fuente
0
  1. La ayuda de Vim dice (: h 10.3):

    Nota: Cuando use el modo Visual para seleccionar parte de una línea, o use CTRL-V para seleccionar un bloque de texto, los comandos de dos puntos se aplicarán a líneas completas. Esto podría cambiar en una versión futura de Vim.

  2. El complemento vis (# 1195) de Charles Campbell ofrece el comando :B {cmd}para aplicar un {cmd}solo a la selección visual (bloque).

Hotschke
fuente