In Vim, qual è un modo elegante per ottenere l'output dalla riga di comando?


14

Se sono in Vim e voglio ottenere un output dalla riga di comando e incollarlo sul mio file corrente, posso eseguire questo:

:! echo "foo" >> %

Questo aggiungerà "pippo" al mio file corrente e dovrò ricaricare.

Esiste un modo più elegante per farlo: quell'output va in un buffer che posso incollare, per esempio?

Risposte:


24

Sì:

:r !echo "foo"

Vedere

:help :r!

Ciò inserirà l'output del comando dopo la riga corrente. Se vuoi catturare l'output del comando in un registro che puoi incollare, puoi farlo:

:let @a = system('echo "foo"')

Ora l'output del comando (inclusa la nuova riga finale) è nel registro a. Vedere

:help let-@
:help system()

Dopo aver visto l'aiuto e sperimentato, vedo che 1) :rè l'abbreviazione di "read" (quindi puoi digitare 'read' o semplicemente 'r' ed è lo stesso comando), e 2) facendo :r path/to/foo.txtinserirai il contenuto di quello file dopo il cursore.
Nathan Long

Inoltre - non sapevo della systemchiamata. È fantastico!
Nathan Long

1
Inoltre non sapevo che potresti impostare manualmente i registri come let @a = 'foo'. Un'idea interessante sarebbe, dopo aver fatto una ricerca e sostituire, potresti salvare il termine di ricerca in un registro per incollarlo altrove facendo let @a = @/: "fai in modo che un registro contenga ciò che contiene il / registro, cioè la mia ultima ricerca".
Nathan Long

1
@Nathan Long: Prego. Altri modi per incollare da / register sono 1) da eseguire :put /per mettere i contenuti del registro sulla riga successiva e 2) mentre si è in modalità di inserimento, digitare Ctrl-R seguito da /per inserire i contenuti del registro nella posizione del cursore. Per ulteriori informazioni su quelli, vedere :help :pute :help i_CTRL-R.
garyjohn,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.