-
2007-05-28
vim使用外部程序打印 - [LBE]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://gosman.blogbus.com/logs/5557687.html
原文:Printing in vim: Using programs to other than the default lpr
作者:Felix Leong
译者:gosman(lianmingchang2008#gmail.com)
来自:http://gosman.blogbus.com
版本:V 1.0.0
时间:2007-5-28
vim 下打印使用:hardcopy(也可用缩写:ha),该命令等价于创建临时Postscript文件,并传递给lpr打印。
那如果要更改 vim 的打印行为呢?比如使用 a2ps 程序将两页缩放到一页打印。使用:printexpr可以很简单的达到目的。在 ~/.vimrc 添加以下代码。
(修改自 2. Print options, from VIM Reference Manual, Printing)
set printexpr=PrintFile(v:fname_in)
function PrintFile(fname)
call system("a2ps " . a:fname)
call delete(a:fname)
return v:shell_error
endfunc基本上你只要将 call system() 的参数替换成其他打印命令就行了。
小提醒:在打印时请关注"节约树木"。
对 vim 脚本的说明
我们将一行行的解释该脚本,需要具备少量的编程知识。
set printexpr=PrintFile(v:fname_in) 设置printexpr将打印请求重定向到PrintFile函数。根据《VIM参考手册》在打印章节的说明 “ 打印文件的文件名变量为v:fname_in”,我们使用变量 v:fname_in 作为函数 PrintFile 的参数,该变量是VIM预定义变量表示输入文件名。
第二行定义函数名 PrintFile和指定参数 fname。第三行调用外部命令“ a2ps [file name]“,system 函数的参数 "a2ps " . a:fname ,用点号将字符串 "a2ps "(有空格)和函数参数(fname)相连接,a: 表示fname是先前定义的函数参数。
最后,我们删除文件(call delete(a:fname))和返回shell错误信息(return v:shell_error),这样 vim 可以返回该错误信息。用 end func 结束函数定义。
随机文章:
通过vim web发布 2007-07-15Vim使用组合键注释代码 2007-06-03Quartus II 中使用VIM编辑器 2008-04-29Bash 补全技巧 2007-10-31grep输出匹配前后多行 2007-09-07
收藏到:Del.icio.us







