Es soll Situationen geben da will man den Quellcode/Text oder einen Ausschnitt dessen zu Papier bringen. Von Natur aus wandelt der VIM mittels :hardcopy den Inhalt des aktuellen Puffers in Postscript und schickt diesen an den Standarddrucker. Mittels der Optionen printoptions, printdevice und printexpr lässt sich das Verhalten des Ausdruckes verändern.

Sehr nützlich für den Ausdruck von Quellcodes ist z.B. printoptions=syntax:y, welches das Syntaxhighlighting mit zu Papier bringt.

Da ich auf der Arbeit eine nutzergesteuerte Druckquota habe, stand ich allerdings vor einem Problem. Der VIM schickt zwar den File korrekt an den Drucker, leider aber mit dem Login-Namen des aktuellen Benutzers, welcher leider nicht mit dem meines Druckkontos übereinstimmt. Abhilfe schafft nur eine kleine Funktion die das auszuführende Druckkommando verändert und dann mittels printexpr zugewiesen wird. Hier der Ausschnitt aus meiner .vimrc:

" setup printing
set printoptions=syntax:y
set printexpr=PrintFile(v:fname_in)

if !exists("*PrintFile")
  function PrintFile(fname)
    call system("lpr -r -Uusername " . a:fname)
    return v:shell_error
  endfunc
endif

Der Funktion selbst bekommt den zu Druckenden Postscript File übergeben und führt dann ein normales LPR Kommando aus. Dieses löscht durch den Paramter -r den geddruckten File nach beendigung und übergibt mittels -U einen passenden Nutzernamen an den Druckserver.


Kommentare