Suponiendo que tengo una línea en un archivo con XXXX
un marcador de posición que he seleccionado de la v
siguiente manera:
XXXX Some other text
¿Cómo puedo cambiar solo la XXXX
salida de un comando externo, como date +%Y%m%d
?
Llegué tan lejos
:'<,'>!date +\%Y\%m\%d
pero eso reemplazó toda la línea.
external-command
replace
muk.li
fuente
fuente
Respuestas:
Puede eliminar el texto e insertar la salida de un comando usando CtrlR- =:
Para la expresión, puede usar la
system()
función para ejecutar comandos externos.Después de seleccionar el texto, presione
c
, luego<c-r>=
y usesystem('date +%Y%m%d')
como expresión.fuente
date
. Si intenta algo comosystem('printf %s foo')
, que no genera una nueva línea final, verá que hay una diferencia.strftime
función que puede usar en lugar desystem('date …')
. La cadena de formato es la misma."=system('date +%Y%m%d')p
en la selección visual en su lugar.Si coloca el cursor en dicha línea puede:
0
poner el cursor en la primera columna.f
Space poner el cursor en el primer espacio en blanco.i
Enter Esc para dividir la líneal
para mover el cursor una línea hacia arriba.:.!date +\%Y\%m\%d
para ejecutar el comandoJ
para unir las líneas nuevamente.De
:h :visual_example
:Ver también
:h visual-operators
para más detalles.De este comentario: También puedes probar el complemento vis o NrrwRgn . Ambos deberían manejarlo bien. (Gracias @ christian-brabandt por el dato).
fuente
Cree una asignación temporal para tales reemplazos. Por ejemplo:
Luego, en modo visual, puede seleccionar texto, escribir
qq
y será reemplazado por la salida del comando. En este ejemplowc -c
procesará su selección, que es el@"
parámetro.perl -pe chomp
es necesario para eliminar una nueva línea final de la salida.fuente
Prueba esto:
date
comando en el registro a, con la nueva línea final eliminada.XXXX
(g/XXXX/
), yXXXX
con el contenido del registro a (s/XXXX/\=@a/g
)Consulte
:h let-@
y:h :global
la sección "Sublista" en:h list-index
fuente
Plugin: Visual Block Commands (vis) por DrChip
Instalación
vis.vba.gz
y dependenciacecutil.vba.gz
en vim8 packpathOP se convierte en ejemplo
fuente