¿Cómo puedo imprimir desde Vim a PDF?

11

Pensé que esto es bastante simple, pero no lo hago: uso gVim y me gustaría obtener el texto como un archivo pdf. En otras aplicaciones como Firefox, el cuadro de diálogo de impresión me muestra las impresoras disponibles y puedo elegir imprimir directamente en un archivo pdf. Sin embargo, en Vim no existe dicho diálogo y el archivo se envía a la impresora estándar del sistema.

Intenté lo siguiente:

  • No puedo hacer el "print-to-pdf" en mi forma estándar de impresión a través de la ventana de la impresora de Ubuntu.
  • :ha > fileconvierte mi archivo a un archivo .ps. Eso es bueno, pero .pdf sería mejor ...
calígula
fuente
No es una respuesta, pero puede usar la ps2pdfherramienta de línea de comandos después, con el archivo poscript como entrada.
kebs

Respuestas:

21

Vimno le mostrará el cuadro de diálogo de impresión. En su lugar, puede imprimir en un archivo PS, abrirlo en un visor PS e imprimir desde allí.

Para imprimir en un archivo PS desde Vim:

:hardcopy > myfile.ps

También puede convertir psa pdfusar ps2pdf:

ps2pdf myfile.ps
Ron
fuente
1
La primera propuesta significa simplemente cambiar la extensión del archivo ... La segunda podría funcionar en un mapeo o algo así, tendré que investigar un poco más para hacerlo ... Gracias hasta ahora ...
caligula
1
Es tan fácil como cambiar una extensión;)
Ron
1
¡Esto es increíble, definitivamente no sabía que esto era una cosa! ¿Se pueden obtener varios archivos en un solo documento?
Ben Kushigian
2
(usuario de cygwin) :ha > file.pdfno creó un archivo pdf válido. La combinación con ps2dpffuncionó pero me da un fondo blanco. Estoy más feliz :TOhtml file.htmly luego
imprimo
Hoy usé una variación de este comando:: 1,50 copia impresa, no creó un archivo, solo se imprimió de las líneas 1 a 50.
Dr Beco
8

Sobre la base de lo que otros ya han declarado ...

Puede usar el siguiente comando vim de una sola línea para crear un archivo .pdf:

:hardcopy > %.ps | !ps2pdf %.ps && rm %.ps

Nota:

  • La %abreviatura del nombre de archivo actual, por lo que HelloWorld.Cse imprimirá enHelloWorld.C.pdf
  • Si desea retener también el archivo .ps intermedio, simplemente omita el && rm %.ps, obteniendo: :hardcopy > %.ps | !ps2pdf %.ps

Además, para cambiar la fuente renderizada, configure printfont antes de ejecutar el comando de copia impresa. Por ejemplo, para seleccionar Courier 8:

:set printfont=Courier:h8

Poniendo todo junto, opté por poner lo siguiente en mi .vimrcarchivo para que simplemente pueda ejecutar el :HardcopyPdfcomando. Este comando también puede operar en un rango seleccionado dentro de un archivo:

set printfont=Courier:h8 "select the font to use when printing
command! -range=% HardcopyPdf <line1>,<line2> hardcopy > %.ps | !ps2pdf %.ps && rm %.ps && echo 'Created: %.pdf'
arr_sea
fuente