Como posso imprimir do Vim para pdf?

11

Eu pensaria que isso é bastante simples, mas não o faço: eu uso o gVim e gostaria de obter o texto como um arquivo pdf. Em outros aplicativos como o Firefox, a caixa de diálogo de impressão mostra as impressoras disponíveis e posso optar por imprimir diretamente em um arquivo pdf. No entanto, no Vim, não existe esse diálogo e o arquivo é enviado à impressora padrão do sistema.

Eu tentei o seguinte:

  • Não consigo fazer o "print-to-pdf" como meu modo padrão de impressão através da janela da impressora do Ubuntu.
  • :ha > fileconverte meu arquivo em um arquivo .ps. Isso é legal, mas .pdf seria melhor ...
calígula
fonte
Não é uma resposta, mas você pode usar ps2pdfa ferramenta de linha de comando posteriormente, com o arquivo poscript como entrada.
Kebs

Respostas:

21

Vimnão mostrará a caixa de diálogo de impressão. Em vez disso, você pode imprimir em um arquivo PS, abri-lo no visualizador PS e imprimir a partir daí.

Para imprimir em um arquivo PS de Vim:

:hardcopy > myfile.ps

Você também pode converter pspara pdfusar ps2pdf:

ps2pdf myfile.ps
Ron
fonte
11
A primeira proposta significa apenas alterar a extensão do arquivo ... A segunda pode funcionar em um mapeamento ou algo assim, vou ter que fazer mais algumas pesquisas para fazer isso ... Obrigado até agora ...
caligula
11
É tão fácil como mudar uma extensão;)
Ron
11
Isso é incrível, definitivamente não sabia que isso era uma coisa! Você pode obter vários arquivos em um único documento?
Ben Kushigian 30/03
2
(usuário cygwin) :ha > file.pdfnão criou um arquivo pdf válido. Combiná-lo com ps2dpffuncionou, mas me dá um fundo branco. Estou mais feliz com :TOhtml file.htmle, em seguida, imprimir esse arquivo html para pdf
lucidbrot
Eu usei uma variação deste comando hoje:: 1,50 impressa, não criar um arquivo, apenas impresso a partir de linhas 1 a 50.
Dr Beco
8

Com base no que outros já declararam ...

Você pode usar o seguinte comando vim de linha única para criar um arquivo .pdf:

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

Nota:

  • O %é um atalho para o nome do arquivo atual, portanto HelloWorld.Cserá impresso emHelloWorld.C.pdf
  • Se você também deseja reter o arquivo .ps intermediário, simplesmente omita o arquivo && rm %.ps, obtendo: :hardcopy > %.ps | !ps2pdf %.ps

Além disso, para alterar a fonte renderizada, defina o printfont antes de executar o comando de cópia impressa. Por exemplo, para selecionar Courier 8:

:set printfont=Courier:h8

Reunindo tudo, optei por colocar o seguinte no meu .vimrcarquivo para que eu possa simplesmente executar o :HardcopyPdfcomando. Este comando também pode operar em um intervalo selecionado dentro de um arquivo:

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
fonte