Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1692217
  • 博文数量: 410
  • 博客积分: 9563
  • 博客等级: 中将
  • 技术积分: 4517
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-03 19:59
个人简介

文章分类

全部博文(410)

文章存档

2017年(6)

2016年(1)

2015年(3)

2014年(4)

2013年(32)

2012年(45)

2011年(179)

2010年(140)

分类: LINUX

2011-05-12 21:48:58

:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://gosman.blogbus.com/logs/5557687.html

原文:
作者: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 结束函数定义。


阅读(1051) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

29091572011-05-29 22:47:20