Suponiendo que tengo una línea en un archivo con XXXXun marcador de posición que he seleccionado de la vsiguiente manera:
XXXX Some other text
¿Cómo puedo cambiar solo la XXXXsalida 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.strftimefunción que puede usar en lugar desystem('date …'). La cadena de formato es la misma."=system('date +%Y%m%d')pen la selección visual en su lugar.Si coloca el cursor en dicha línea puede:
0poner el cursor en la primera columna.fSpace poner el cursor en el primer espacio en blanco.iEnter Esc para dividir la línealpara mover el cursor una línea hacia arriba.:.!date +\%Y\%m\%dpara ejecutar el comandoJpara unir las líneas nuevamente.De
:h :visual_example:Ver también
:h visual-operatorspara 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
qqy será reemplazado por la salida del comando. En este ejemplowc -cprocesará su selección, que es el@"parámetro.perl -pe chompes necesario para eliminar una nueva línea final de la salida.fuente
Prueba esto:
datecomando en el registro a, con la nueva línea final eliminada.XXXX(g/XXXX/), yXXXXcon el contenido del registro a (s/XXXX/\=@a/g)Consulte
:h let-@y:h :globalla sección "Sublista" en:h list-indexfuente
Plugin: Visual Block Commands (vis) por DrChip
Instalación
vis.vba.gzy dependenciacecutil.vba.gzen vim8 packpathOP se convierte en ejemplo
fuente