2012-05-28 14 views
7

Come è possibile reindirizzare il contenuto di un registro allo standard input di un comando esterno? Ho provato intuitivamente quanto segue, ma non funziona (può servire ad illustrare il mio bisogno, però):Vim: pipe register to external command

:"0w !some_command 

risposta

11

Se il contenuto del registro non accade per contenere NULL, allora è così semplice come

call system('some_command', @r) 

. Se capita in seguito a causa del fatto che l'utilizzo del registro come variabile li trasformerà tutti in newline (e non ho idea di come siano rappresentati internamente accanto al fatto che i registri non sono semplici come una struttura con tipo di registro e C Stringa con terminazione NULL) non è possibile utilizzare in questo modo e invece incollare in un buffer temporaneo e utilizzare :%w !. Diventa ancora più complicato se si vuole essere in grado di inviare un registro a some_commandcompletamente intatto quando il registro capita di avere sia NULL (i) sia qualcosa di diverso da newline come ultimo carattere.

+0

Proprio quello che volevo! Non sapevo che 'system()' ha preso un secondo argomento. – slezica