分类: 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 结束函数定义。