2012-05-28 10 views
7

¿Cómo puedo conectar el contenido de un registro a la entrada estándar de un comando externo? Yo probé la siguiente manera intuitiva, pero no funciona (puede servir para ilustrar mi necesidad, sin embargo):Vim: registro de tubería al comando externo

:"0w !some_command 

Respuesta

11

Si contenido del registro no sucede para contener valores nulos, entonces es tan simple como

call system('some_command', @r) 

. Si sucede entonces debido al hecho de que usar el registro como variable los transformará a todos en líneas nuevas (y no tengo idea de cómo se representan internamente, además del hecho de que los registros no son tan simples como una estructura con tipo de registro y C Cadena terminada en NULL) no se puede usar de esta manera y tiene que pegar en un búfer temporal y usar :%w !. Resulta aún más complicado si desea poder enviar un registro al some_commandcompletamente intacto cuando el registro tiene tanto NULL (s) como algo más que newline como su último carácter.

+0

¡Justo lo que quería! No sabía que 'system()' tomó un segundo argumento. – slezica

Cuestiones relacionadas