Comment imprimer de Vim en pdf?

11

J'aurais pensé que c'est assez simple, mais je n'y arrive pas: j'utilise gVim et j'aimerais obtenir le texte sous forme de fichier pdf. Dans d'autres applications comme Firefox, la boîte de dialogue d'impression me montre les imprimantes disponibles et je peux choisir d'imprimer directement dans un fichier pdf. Cependant, dans Vim, il n'y a pas de boîte de dialogue de ce type et le fichier est simplement envoyé à l'imprimante standard du système.

J'ai essayé ce qui suit:

  • Je ne suis pas en mesure de faire le "print-to-pdf" à ma façon standard d'impression via la fenêtre d'impression d'Ubuntu.
  • :ha > fileconvertit mon fichier en un fichier .ps. C'est bien, mais .pdf serait mieux ...
caligula
la source
Pas une réponse, mais vous pouvez utiliser l' ps2pdfoutil de ligne de commande par la suite, avec le fichier poscript en entrée.
kebs

Réponses:

21

Vimne vous montrera pas la boîte de dialogue d'impression. Au lieu de cela, vous pouvez imprimer dans un fichier PS, l'ouvrir dans une visionneuse PS et imprimer à partir de là.

Pour imprimer dans un fichier PS à partir de Vim:

:hardcopy > myfile.ps

Vous pouvez également convertir psen pdfutilisant ps2pdf:

ps2pdf myfile.ps
Ron
la source
1
La première proposition signifie simplement changer l'extension du fichier ... La seconde pourrait fonctionner dans une cartographie ou quelque chose comme ça, je
devrai
1
C'est aussi simple que de changer une extension;)
Ron
1
C'est génial, je ne savais certainement pas que c'était une chose! Pouvez-vous obtenir plusieurs fichiers dans un seul document?
Ben Kushigian
2
(utilisateur cygwin) :ha > file.pdfn'a pas créé de fichier pdf valide. Le combiner avec ps2dpfa fonctionné mais me donne un fond blanc. Je suis le plus content :TOhtml file.htmlet puis j'imprime ce fichier html en pdf
lucidbrot
J'ai utilisé une variante de cette commande aujourd'hui:: 1,50 copie papier, il n'a pas créé de fichier, juste imprimé des lignes 1 à 50.
Dr Beco
8

S'appuyant sur ce que d'autres ont déjà déclaré ...

Vous pouvez utiliser la commande vim à ligne unique suivante pour créer un fichier .pdf:

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

Remarque:

  • Le %est un raccourci pour le nom de fichier actuel, donc HelloWorld.Csera imprimé surHelloWorld.C.pdf
  • Si vous souhaitez également conserver le fichier .ps intermédiaire, omettez simplement le && rm %.ps, en obtenant: :hardcopy > %.ps | !ps2pdf %.ps

De plus, pour modifier la police rendue, définissez la police d'impression avant d' exécuter la commande de copie papier. Par exemple, pour sélectionner Courier 8:

:set printfont=Courier:h8

En mettant tout cela ensemble, j'ai choisi de mettre ce qui suit dans mon .vimrcfichier afin que je puisse simplement exécuter la :HardcopyPdfcommande. Cette commande peut également fonctionner sur une plage sélectionnée dans un fichier:

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
la source