print

print.txt 适用于 Vim 9.2 版本。 最近更新: 2025年9月 VIM 参考手册 by Bram Moolenaar 译者: Willis 打印 printing 1. 简介 print-intro 2. 打印选项 print-options 3. PostScript 打印 postscript-printing 4. PostScript 打印编码 postscript-print-encoding 5. PostScript 中日韩打印 postscript-cjk-printing 6. PostScript 打印疑难解答 postscript-print-trouble 7. PostScript 工具 postscript-print-util 8. 换页符 printing-formfeed {仅当编译时加入 +printer 特性才有效}

1. 简介 print-intro

在 MS-Windows 上 Vim 可直接在系统已安装的打印机上打印文本。在其他系统上,会先 生成 PostScript 文件。对支持 PostScript 的打印机,可直接发送文件打印,对其他类 型的打印机,需要借助 ghostscript 等程序转换处理,完成打印操作。 备注: 如果 :hardcopy 打印不可用,备用方案是用 :TOhtml 导出为 HTML,再用浏 览器上打开打印。 :ha :hardcopy E237 E238 E324 :[range]ha[rdcopy][!] [arguments] 打印 [range] 范围内的所有行 (缺省是整个文件)。 在 MS-Windows 上,会显示打印对话框,用来选择打印机和 纸张尺寸等。[!] 版本跳过对话框。这里,打印机由 'printdevice' 指定。如果 'printdevice' 为空,就使用 系统缺省打印机。 对于非 MS-Windows 的系统,先写入 Postscript 临时文件, 然后通过 'printexpr' 设置的命令打印。'printexpr' 里可 通过 v:cmdarg 获取 [arguments] 参数。如果未设置 'printexpr',忽略 [arguments]'printoptions' 可用于设 置纸张尺寸,是否双面打印等。 备注: 需要打印到 pdf 时,可通过 "ps2pdf" 等外部工具将 PostScript 转换为 PDF。 :[range]ha[rdcopy][!] >{filename} 功能同上,但不直接打印,而是保存 Postscript 文件 {filename}。 文件名支持展开 "%" 等特殊字符 cmdline-special注意同名文件会被静默覆盖。 {仅当编译时加入 +postscript 特性才有效} 在 MS-Windows 上应改用打印机驱动程序的 "输出到文件" 功 能。 打印过程中会实时显示完成的页号和百分比。要中断打印,按中断键 CTRL-C (在 MS-Windows 系统上用 CTRL-Break)。 'printfont''printoptions' 选项控制打印输出。'printheader' 指定页眉格式。 打印文件会严格限定在指定的页边距 (margin) 内,不受当前窗口 'wrap''linebreak' 设置影响。'printoptions' 里的 "wrap" 项可以用来关闭回绕。 打印文本使用当前高亮色彩,但有以下修正: 1) 普通背景强制渲染为白色 (白纸的颜色)。 2) 白色文本和缺省前景统一转为黑色,保证可见! 3) 'background' 是 "dark" 时,颜色自动加深,避免在白纸上过浅看不清。

2. 打印选项 print-options

本节详细介绍控制打印行为的所有选项。选项通用设置方法可见 options.txt pdev-option 'printdevice' 'pdev' 字符串 (缺省为空) 全局 :hardcopy 命令带感叹号 (!) 会跳过打印机选择对话框,本选项指定此时使用的打印 机名。在 Win32 上,必须严格匹配标准打印对话框出现的打印机名。 为空时, :hardcopy! 自动使用系统缺省打印机。 penc-option E620 'printencoding' 'penc' 字符串 (缺省值: MS-Windows: cp1252, Macintosh: mac-roman, VMS: dec-mcs, HPUX: hp-roman8, EBCDIC: ebcdic-uk, 其他: 空) 全局 设置打印时使用的字符编码。Vim 会从 'runtimepath' 里的 "print" 目录下读取对应的 打印字符编码文件。 本选项接受 encoding-names 内所有编码值。合法名称会被转换为 Vim 标准编码名, 详见 'encoding'。无法识别的编码名会被转换为小写形式、并将下划线替换为 '-'。 'printencoding' 为空或 Vim 找不到对应编码文件时,会改用 'encoding' (仅限设置值 为 8 位编码) 查找打印字符编码文件。如果还是找不到编码文件,最后使用 "latin1" 打印字符编码文件。 'encoding' 为多字节编码时,Vim 会先将字符转换为打印编码 ('printencoding' 为空 则默认转换到 latin1),再进行打印 {仅当编译时加入 +iconv 特性才能进行到非 latin1 打印编码的转换}。如果完全无法转换,打印失败。无法转换的个别字符会被倒转 问号 (¿) 代替。 预装 Mac、VMS、HPUX 和 EBCDIC 四种平台缺省使用的打印字符编码文件。MS-Windows 平台缺省使用代码页 1252 打印字符编码。 pexpr-option 'printexpr' 'pexpr' 字符串 (缺省: 见下) 全局 {仅当编译时加入 +printer+postscript 特性时才有 效} 表达式,用于执行 :hardcopy 生成的 PostScript 文件的打印。 要打印的临时 PostScript 文件名保存在 v:fname_in:hardcopy 命令参数保存在 v:cmdarg 。 该表达式在打印后,必须负责删除临时文件。如果有错误,必须返回非零值。成功时则返 回零或空串。 非 MS-Windows 非 VMS 系统上,缺省操作是直接执行 "lpr" 外部命令打印文件: system('lpr' .. (&printdevice == '' ? '' : ' -P' .. &printdevice) .. ' ' .. v:fname_in) .. delete(v:fname_in) + v:shell_error 在 MS-Windows 上,缺省操作是将临时文件复制到当前 'printdevice': system('copy' .. ' ' .. v:fname_in .. (&printdevice == '' ? ' LPT1:' : (' \"' .. &printdevice .. '\"'))) .. delete(v:fname_in) 在 VMS 上,缺省操作是将文件发送到缺省或者当前 'printdevice': system('print' .. (&printdevice == '' ? '' : ' /queue=' .. &printdevice) .. ' ' .. v:fname_in) .. delete(v:fname_in) 要自定义本选项,为了避免转义空格的麻烦,建议使用更简洁的函数形式。例如: :set printexpr=PrintFile() :function PrintFile() : call system("ghostview " .. v:fname_in) : call delete(v:fname_in) : return v:shell_error :endfunc 使用不带参数的函数调用更有效率,见 expr-option-function 。 小心部分打印程序在读入文件前就返回控制权,异步执行。过早删除文件会导致打印失 败。请参考程序通常自带的在打印完成后自动清理文件的选项。 E365 如果表达式计算失败或返回非零值,会报错。Vim 此时会自动清理文件。非 MS-Windows 系统上的缺省值用到一个技巧: 加上 "v:shell_error" 会在 system() 调用失败时返回 非零值。 表达式以 s: 或 <SID> 开始时,会用脚本 ID ( local-function ) 替代这些前缀。例 如: set printexpr=s:MyPrintFile() set printexpr=<SID>SomePrintFile() 否则,表达式会在设置本选项的脚本上下文里计算,这样就可访问该脚本的局部项目。 为了安全原因,本选项不能在 modelinesandbox 里设置。 pfn-option E613 'printfont' 'pfn' 字符串 (缺省为 "courier") 全局 指定 :hardcopy 命令输出所用字体。格式和 'guifont' 选项相同,但只允许单个字 体,而且不支持 "guifont=*" 特殊语法。 在 Win32 GUI 版本上,除了字体名外,还可指定附加属性,和 'guifont' 选项类似。 在其他系统上,只识别 ":h11",其中 "11" 是字体点数 (point) 大小。忽略时默认使用 10 点字。 pheader-option 'printheader' 'pheader' 字符串 (缺省为 "%<%f%h%m%=Page %N") 全局 定义 :hardcopy 输出页眉格式。格式同 'statusline' 选项。选项为空时,缺省使用 极简只包含页号的页眉。 {仅当 Vim 编译时加入 +statusline 特性才有效,否则使用缺省页眉} pmbcs-option 'printmbcharset' 'pmbcs' 字符串 (缺省为 "") 全局 :hardcopy 生成中日韩文字输出时,指定使用的字符集。目前,识别以下预定义值: 值 描述 中文 GB_2312-80 (简体) GBT_12345-90 MAC Apple Mac 简体中文编码 GBT-90_MAC 适配 Apple Mac 简体中文 的 GB/T 12345-90 GBK GBK (GB 13000.1-93) ISO10646 ISO 10646-1:1993 中文 CNS_1993 CNS 11643-1993, 第一、二字面 (繁体) BIG5 标准 Big5 ETEN 带倚天扩展的 Big5 ISO10646 ISO 10646-1:1993 日文 JIS_C_1978 JIS_X_1983 JIS_X_1990 MSWINDOWS Win3.1/95J (JIS X 1997 + NEC + IBM 扩展) KANJITALK6 Apple Mac KanjiTalk V6.x KANJITALK7 Apple Mac KanjiTalk V7.x 韩文 KS_X_1992 MAC Apple Macintosh 韩语编码 MSWINDOWS 带微软扩展的 KS X 1992 ISO10646 ISO 10646-1:1993 上述字符集取值只有与 'printencoding' 的特定组合才有效。下表列出所有合法组合: euc-cn gbk ucs-2 utf-8 中文 GB_2312-80 x (简体) GBT_12345-90 x MAC x GBT-90_MAC x GBK x ISO10646 x x euc-tw big5 ucs-2 utf-8 中文 CNS_1993 x (繁体) BIG5 x ETEN x ISO10646 x x euc-jp sjis ucs-2 utf-8 日文 JIS_C_1978 x x JIS_X_1983 x x JIS_X_1990 x x x MSWINDOWS x KANJITALK6 x KANJITALK7 x euc-kr cp949 ucs-2 utf-8 韩文 KS_X_1992 x MAC x MSWINDOWS x ISO10646 x x 例如,要设置打印日文所需的编码和字符集,可用: :set printencoding=euc-jp :set printmbcharset=JIS_X_1983 'printmbcharset' 设为上表未列值时,会假定为自定义多字节字符集,此时不再检查与 'printencoding' 值是否兼容。Vim 会在 'runtimepath' 里的 "print" 目录下读取对应 字符集定义文件。 pmbfn-option 'printmbfont' 'pmbfn' 字符串 (缺省为 "") 全局 逗号分隔的字段列表,用于指定 :hardcopy 生成中日韩文字输出所用字体。每个字体 名必须指定单字符前缀,指示字体用途: r:{font-name} 普通字符字体 b:{font-name} 粗体字符字体 i:{font-name} 斜体字符字体 o:{font-name} 粗斜体字符字体 执行中日韩文字打印时,r: 前缀字段必填。其它类型可选,省略时使用以下后备规则: b: 未设置时,使用 r: i: 未设置时,使用 r: o: 未设置时,使用 b: 部分中日韩字体缺失 ASCII 编码区字符。部分代码点字形也和标准 ASCII 有差异。为 此,提供以下两组字段,控制 ASCII 编码区字符的打印方式。 c:yes ASCII 编码区统一使用 Courier 字体渲染。 c:no (缺省) a:yes ASCII 编码区使用标准 ASCII 字符集字形 (如 "ABC")。 a:no (缺省) ASCII 编码区使用本地 (国家) 字符集字形 (如 "ABC")。 下例指定两种多字节字体,一种用于普通和斜体,一种用于粗体和粗斜体,ASCII 编码区 使用 Courier 字体但应用国家字符集字形: :set printmbfont=r:WadaMin-Regular,b:WadaMin-Bold,c:yes popt-option 'printoptions' 'popt' 字符串 (缺省为 "") 全局 {仅当编译时加入 +printer 特性才有效} 逗号分隔的项目列表,控制 :hardcopy 的打印排版与输出行为: left:{spec} 左边距 (缺省: 10pc) right:{spec} 右边距 (缺省: 5pc) top:{spec} 顶边距 (缺省: 5pc) bottom:{spec} 底边距 (缺省: 5pc) {spec} 为数值加单位,可用单位包括: "in" 英寸、"pt" 点数 (1 点等于 1/72 英寸)、"mm" 毫米、 "pc" 纸张尺寸百分比。 故意混用多种单位的示例: left:2in,top:30pt,right:16mm,bottom:3pc 如果单位识别失败,不报错。直接使用该边距缺省值。 header:{nr} 页眉预留行数。 实际只使用第一行,所以 {nr} 为 2 时,第二行为空行。 'printheader' 控制页眉格式。 header:0 不打印页眉。 header:2 (缺省) 页眉占用两行。 syntax:n 不使用语法高亮。速度更快,方便打印大文件。 syntax:y 使用语法高亮。 syntax:a (缺省) 打印机支持彩色或者灰度打印时,使用语法高亮。 number:y 打印输出包含行号。 number:n (缺省) 不输出行号。 wrap:y (缺省) 回绕长行。 wrap:n 截断长行。 duplex:off 单面打印。 duplex:long (缺省) 双面打印 (如果可用),长边装订。 duplex:short 双面打印 (如果可用),短边装订。 collate:y (缺省) 逐份打印: 1 2 3,1 2 3,1 2 3 collate:n 非逐份打印: 1 1 1,2 2 2,3 3 3 jobsplit:n (缺省) 多份打印合并成单个打印任务。 jobsplit:y 每份单独发起打印任务。用于 N-路后期处理。 portrait:y (缺省) 纵向打印。 portrait:n 横向打印。 a4 letter paper:A4 (缺省) 纸张尺寸: A4 paper:{规格} 纸张尺寸可选规格: {规格} 厘米单位尺寸 英寸单位尺寸 10x14 25.4 x 35.57 10 x 14 A3 29.7 x 42 11.69 x 16.54 A4 21 x 29.7 8.27 x 11.69 A5 14.8 x 21 5.83 x 8.27 B4 25 x 35.3 10.12 x 14.33 B5 17.6 x 25 7.17 x 10.12 executive 18.42 x 26.67 7.25 x 10.5 folio 21 x 33 8.27 x 13 ledger 43.13 x 27.96 17 x 11 legal 21.59 x 35.57 8.5 x 14 letter 21.59 x 27.96 8.5 x 11 quarto 21.59 x 27.5 8.5 x 10.83 statement 13.97 x 21.59 5.5 x 8.5 tabloid 27.96 x 43.13 11 x 17 formfeed:n (缺省) 换页符 (0x0c) 当作普通字符打印。 formfeed:y 换页符使当前行在新页首行继续打印。 某项省略时使用其缺省值。使用弹出对话框选择打印机及选项时,可覆盖本选项部分参 数。示例: :set printoptions=paper:letter,duplex:off

3 PostScript 打印 postscript-printing

E455 E456 E457 E624 只要磁盘空间充足,生成 PostScript 文件当无问题。前提是运行时文件正确安装 (如果 能打开帮助文件,一般说明安装正常)。 PostScript 打印有若干限制: - 'printfont' - 忽略字体名 (固定使用 Courier 家族字体 - 所有 PostScript 打印机 都应自带) 但可指定字体大小。 - 'printoptions' - 生成的 PostScript 输出会强制双面打印设置,但最终是否生效取 决于打印机硬件。不支持的打印机多数会直接忽略。但少数打印机会完全无法打印。 - 8 位支持 - 尽管很多 8 位打印字符编码都有支持,仍存在部分字符无法打印的问题。 这取决于打印机内置字体是否包含该字符。缺失字符缺省会用倒转问号 (¿) 代替,如 果该字形也不存在,则替换为空格。安装新版 Courier 家族字体,可完整输出当前编 码里的所有字符。 - 多字节支持 - Vim 目前会试图将多字节字符转换为 'printencoding' 指定的 8 位编 码 (为空时默认使用 latin1)。无法转换的个别字符会显示为未知字符。如果 Vim 完 全无法完成编码转换,整个打印过程会失败。

4. 自定义 8 位打印字符编码 postscript-print-encoding

E618 E619 如需打印 8 位字符数据时使用自定义打印字符编码,需要自行编写 PostScript 字体编 码向量。编码向量的完整编写细节超出本帮助文件的范围。可查阅 Addison-Wesley 出版 的 PostScript 语言参考手册第三版,或从 https://www.adobe.com/ 获取 PDF 版本。 以下仅说明使 Vim 识别并加载自定义打印字符编码的步骤。 i. 为编码向量定义唯一名称,以不与 Vim 已识别或标准编码名 (编码名参见 encoding-names ) 冲突、也不易和他人重复为原则。 ii. 将 $VIMRUNTIME/print/latin1.ps 复制到用户 'runtimepath' 里的 "print" 子目 录下,并重命名为自定义编码名。 iii. 编辑该文件。将所有 latin1 替换为自定义编码名 (包括 %%Title: 开头的那行)。 同时,将字形名 (glyph names) 数组替换为新编码向量。该数组必须恰好有 256 项,否则打印会直接失败! iv. 在 Vim 里,将 'printencoding' 设为自定义编码名。 设置完成后,文件打印就会使用自定义打印字符编码。 除了 %%Title: 开头一行里的编码名和 %%Version:: 开头一行里的版本外,禁止修改前 三行其他任何内容,包括行顺序,否则 Vim 会报告该资源文件有错。 [PostScript 专业技术解释 - Vim 打印时,会根据 'printencoding' 值匹配同名文件。 该文件会定义名为 /VIM-name 的 PostScript Encoding 新资源,其中 name 为 Vim 实 际使用的打印字符编码。]

5. PostScript 中日韩打印 postscript-cjk-printing

E673 E674 E675 Vim 支持打印中日韩文本文件。相比普通英文打印,需要额外设置更多选项才能正常输 出。 中日韩各有多套标准字符集和编码,打印时必需同时指定两者。另外,这些字体通常没有 独立斜体字形,需要依赖字重 (weight) 和笔画粗细 (stroke style) 区分强调效果。因 此,因此,指定打印字体需要不同的设置逻辑。 'printencoding''printmbcharset' 选项分别用于指定编码和字符集。省略 'printencoding' 时,默认如常使用 'encoding'。手动指定 'printencoding' 后,打印 时字符会先被转换为该编码。必须确保该编码和文件内容所需字符集兼容,否则部分字符 可能无法打印。 'printmbfont' 指定打印所需中日韩字体。用于分别设置普通、斜体、粗体和粗斜体四种 语法高亮风格对应的打印字体。 Vim 不自带中日韩字体。部分免费中 (繁体) 日韩字体可从以下资源获取: https://resources.oreilly.com/examples/9781565922242/ 字体说明文档 https://resources.oreilly.com/examples/9781565922242/-/blob/master/00README 字体安装方法请阅读打印机文档。 中日韩字体可以非常巨大,因为包含数以千计的字形,很多字体只包含了国家标准的子 集。如果发现打印不出半角罗马字符,需要在 'printmbfont' 里设置对 ASCII 编码区使 用 Courier 字体。如果打印不出其他字符,请自动寻找包含所需字形的字体。 ASCII 字符的另一个问题是若干国家字符集对 ASCII 编码区指定不同字形。用国家字符 集打印 ASCII 文本时,可能不符预期。为此需要在 'printmbfont' 里设置对 ASCII 编 码区使用标准 ASCII 字符字形。 支持自建多字节字符集,但不建议新手操作。具体细节超出本帮助文件的范围,可见 https://www.adobe.com 提供的 PDF 文件格式官方文档 'Adobe CMap and CIDFont Files Specification, Version 1.0' 里的 CMap (字符映射表) 相关文件。

6. PostScript 打印疑难解答 postscript-print-trouble

E621 打印 PostScript 出现问题的通常唯一症状是完全没有打印输出。少数情况下会打印出一 张报错页,标明引发打印任务中断的 PostScript 操作符。 打印失败的若干可能原因: - prolog 资源文件版本错误。prolog 资源文件存放 Vim 打印必需的 PostScript 脚 本。不同 Vim 版本对应不同专属版本。请确保安装了正确的运行时文件,且在用户 'runtimepath' 里的 "print" 目录下,没有存放旧版本 prolog 文件。 - 纸张尺寸不兼容。部分 PostScript 打印机会因为不支持请求的纸张尺寸而中止打印。 Vim 缺省用 A4 纸。请确认实际打印机纸张规格,并相应设置 'printoptions' 的 "paper" 项。如果无法确定规格名,可实测打印纸尺寸,对照 'printoptions' 列出的 纸张尺寸列表,选取长宽 接近的规格。 注意: 实测纸张尺寸与文档标注会存在微小偏差。如果确实没有相近规格,可使用以下 讨论的 PSUtils 里的 psresize 工具缩放文件。 - 双面打印 (duplex)。多数不支持双面打印的 PostScript 打印机会自动忽略双面打印 请求。但部分设备会中止打印任务。可尝试关闭 "duplex" 项再打印。 注意: 可使用 PSUtils 工具手动实现双面打印 - 见下。 - 逐份打印 (collated)。和双面打印情形类似,多数不支持逐份打印的打印机会自动忽 略此种请求。但部分设备会中止打印任务。可尝试关闭 "collate" 项再打印。 - 语法高亮。部分打印管理代码不支持在黑白打印机上打印包含语法高亮的 PostScript 文件,即使全文只使用黑色。可尝试关闭 "syntax" 项再打印。 安全 'printoptions' 设置值为: :set printoptions=paper:A4,duplex:off,collate:n,syntax:n 将 "A4" 换成适配打印机的纸张规格。

7. PostScript 工具 postscript-print-util

7.1 Ghostscript Ghostscript 是 PostScript 和 PDF 解释器,可预览和在非 PostScript 打印机上打印 PostScript 和 PDF 文件。还可将 PostScript 文件转换成 PDF 文件。 Ghostscript 可在多种平台上运行。 有三个可用的版本: - AFPL Ghostscript (原 Aladdin Ghostscript) 对非商业用途免费。官网是: http://www.cs.wisc.edu/~ghost/ - GNU Ghostscript 以 GNU General Public License (GPL 开源协议) 发行,官网是: https://www.gnu.org/software/ghostscript - 商业授权版。 Ghostscript 的更多信息可见: http://www.ghostscript.com/ 发布自带众多非 PostScript 打印机支持。如果未找到所需打印机支持,可前往 Ghostscript 网站查找额外驱动。 7.2 Ghostscript 预览器 原生 Ghostscript 界面非常原始,因此衍生了不少图形化前端程序。提供便捷 PostScript 文件选择,缩放预览,一键打印。详见相关文档。 X11 - Ghostview。获取地址: http://www.cs.wisc.edu/~ghost/gv/ https://www.gnu.org/software/gv/ 备用地址 (版本未必最新): http://www.cs.wisc.edu/~ghost/gv/ OpenVMS - 源码已内置支持 (未经测试)。见 (链接看来已失效): wwwthep.physik.uni-mainz.de/~plass/gv/ MS-Windows - GSview。获取地址: http://www.cs.wisc.edu/~ghost/gsview/ Linux - GSview。流行 MS-Windows 预览器的 Linux 版本。获取地址: http://www.cs.wisc.edu/~ghost/gsview/ 7.3 PSUtils PSUtils 是一组操作 Postscript 文档的工具程序。提供多平台二进制发布与完整源码。 获取地址: http://knackered.org/angus/psutils 常用工具包括: - psnup. 将 PS 文件转化为 N-路打印版本。 - psselect. 选择打印页范围、调整页面打印顺序。 - psresize. 修改页面大小。 - psbook. 重新排列页面顺序和页面排版,方便打印成册。 工具支持管道串联,可组合实现复杂打印排版需求。 N - 路 打 印 psnup 工具可将 Vim 生成的 PostScript 文件转化为 n-路版本 (即在同一物理页上打印 n 个逻辑页)。生成 2-路输出的简单方法是,先创建 PostScript 文件: :hardcopy > test.ps 然后在命令行上执行: psnup -n 2 test.ps final.ps 注意: 部分 Ghostscript 预览器打开 psnup 生成的文件会给出警告 - 可安全忽略。 最后,使用平台打印命令,将 final.ps 发送到 PostScript 打印机。打印完毕后,手动 删除两个临时 PostScript 文件。可修改 'printexpr' 自动完成打印前所需额外转换。 双 面 打 印 的 替 代 方 法 psselect 工具可手动实现双面打印任务。该工具提供 -e 和 -o 选项,可分别打印 PS 文件的偶数页和奇数页。 先用 :hardcopy 命令生成 PS 文件,然后拆分奇数页和偶数页: psselect -o test.ps odd.ps psselect -e test.ps even.ps 然后,使用平台打印命令,打印 odd.ps。打印完成后取出纸张,翻面放回取纸器。最 后,使用平台打印命令,打印 even.ps。这样,偶数页就会印在奇数页背面。 要记住以下几点: 1. 首页位置。打印奇数页时如果首页出现在最上方,需要给奇数页反转页码顺序,可用 psselect 的 -r 选项完成。这样可以保证第 2 页打印在第 1 页背面。 注意: 优先反转奇数页。避免总页数为奇数时出现排版错乱。 2. 纸张方位。翻面时需要根据打印机走纸结构,选择横向翻转 (沿长边)、纵向翻转 (沿 短边)、甚至旋转 180 度。桌上型喷墨打印机走纸直观,而小型激光打印机走纸路径 不易察看,需自行测试调整。

8. 换页符 printing-formfeed

Vim 缺省对换页控制符 formfeed 不作任何特殊处理。设置 'printoptions' 的 "formfeed" 项可使 Vim 识别换页符,读到换页符立即换页,该行剩余内容在新页里继续 打印。换页符提供了较为原始的打印控制。但有若干注意事项。 只要一行包含换页符,Vim 会先输出这一整行 (开启行号时连带行号)。如果该行是页面 第一行且首字符就是换页符,会先打印空白页,再换到下一页输出内容。 因为行号只在包含换页符的行开头打印,新页打印的该行其余部分不再打印行号。这和 'printoptions' 里置位 "wrap" 项时,长行回绕行不显示行号的逻辑一致。 换页符在行尾时,新页内容会从第二行而非第一行开始。这是因为 Vim 处理完换页符后 再处理行尾,从而在继续打印之前,先自行下移一行。 根据以上几点,推荐使用换页符处理时,关闭行号打印,且不要将换页符放在行尾。还要 合理调整换页符上方行数,防止意外输出空白页。

vim:tw=78:ts=8:noet:ft=help:norl: