从vim打印到Postscript

6
我在使用Vim打印到Postscript时遇到了问题。
我正在使用utf-8编码,其中包含捷克字符,如“ščřž”,但输出中出现了倒置的问号,而不是正确的字符。
vim --version
VIM - Vi IMproved 7.2
+iconv +multi_byte +postscript
打印机设置:
set printoptions=paper:A4,duplex:off,collate:n,syntax:n
打印机字体:courier
3个回答

1
将缓冲区转换为HTML格式发送到浏览器,然后从那里打印:
:TOhtml | w | !open -a Safari %

例如,我在vim中有这样的代码: enter image description here 如果我输入

:ha

我理解到的是: 在此输入图片描述
但是当我将其发送给浏览器时,我得到了这个(带有颜色方案!):

enter image description here

我在我的 .vimrc 文件中添加了以下代码,可以删除新的 HTML 缓存和已存储文件:
nnoremap <F2> <ESC> :TOhtml <bar> w <bar> !open -a Safari % <CR> <bar> ZQ <CR> <bar> execute '!rm %:p.html' <CR>

1
Rkulla,那是错误的。关于您的消息,我已经理解,如果我们不设置“printencoding”,vim将把我们的消息(utf-8)转换为“latin1”,因此我们会遇到问题。我认为这不是真的。

我在vim中使用printencoding=utf-8和:hardcopy打印了一个带有西里尔字母的文件,但是我得到了反向问号而不是正确的符号。我的设置如下: 1)printfont = utf-8 2)encoding = utf-8 3)fileencoding = utf-8。 我认为问题出在PostScript上。如果您尝试在控制台/终端(非GUI)中使用lp/lpr打印某些内容(例如带有西里尔字母的内容),则会得到不正确的符号(在西里尔字母的位置)。这是终端中从非ASCII文本转换为PostScript的问题。 Vim使用printexpr并具有默认值: printexpr=system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice) . ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error。 我不知道该如何解决这个问题。我读到过这是Unix/Linux的普遍问题。 但您应该尝试重写printexpr以使用a2ps、enscript或类似工具。


0

请确保您的打印机支持打印Unicode字符。尝试更新驱动程序并进入设置,打开用于打印的TrueType字体或类似选项。据我所知,Courier使用ASCII。

键入:h printencoding会出现:

如果“printencoding”为空或VIM找不到文件,则它将使用“encoding”(如果VIM编译时带有|+multi_byte|并且设置为8位编码)来查找打印字符编码文件。如果VIM无法找到字符编码文件,则将使用“latin1”打印字符编码文件。 当“encoding”设置为多字节编码时,VIM将尝试将字符转换为打印编码以进行打印(如果“printencoding”为空,则转换将为latin1)。除了latin1之外的其他打印编码的转换需要VIM编译时具有|+iconv|功能。 如果无法进行转换,则打印将失败。无法转换的任何字符都将替换为倒置的问号。 提供了四个打印字符编码文件以支持默认的Mac、VMS、HPUX和EBCDIC字符编码,并在这些平台上默认使用。在Windows和OS/2平台上,默认使用代码页1252打印字符编码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接