Vimscript武器库

前面我们走马观花地将Vimscript的大致语法过了一遍。下面我们开始深入看一下Vimscript都给我们准备了哪些武器。如果只用这些武器就够了,那么就太好了,只用Vimscript会导致最佳的兼容性。否则不管是用:python还是使用扩展库,都给可移植性带来麻烦。

随着Vim的广泛移植,Vimscript带来的可移植性还是很可观的。这是一门跨相当多平台可用的语言。

之前我们为了区分normal命令和ex命令,在脚本中使用ex命令的前面都加上了”:”前缀。从这讲开始,凡是写在脚本中的ex命令均省略冒号,因为出现在脚本中的一定都是ex命令,normal命令反而要靠normal命令来执行。

时间和日期相关函数

柿子捡软的捏,我们先从规模最小的时间和日期函数开始。

  • localtime(): 返回当前时间的数字。这个值是从1970年1月1日0时开始计算的秒数。
  • strftime({格式字符串},[时间值]}): 将时间数字转化成字符串。这个函数是不具备可移植性的,其格式受具体使用的C函数库的限制。这个函数并不是所有的Vim上都有的,所以需要在使用前判断是否存在。
  • getftime({文件名}): 获取一个文件的最后修改时间。返回是个整数,与localtime()一样。

例:

function GetLocalTime()
        let l:time= localtime()
        if exists("*strftime")
                return strftime("%c",l:time)
        else
                return l:time
        endif
endfunction

再比如,我们用localtime()来模拟随机数:

function GetRand()
                let l:seed = localtime()
                let l:value = l:seed % 100
                return l:value / 100.0
endfunction

reltime功能

如果在编译时提供了+reltime选项,那么将额外提供几个功能:

* reltime(): 返回一个更精确地表示时间的值,格式如这样:[1500367300, 966070],是一个列表。

* reltimestr(): 返回reltime()值的文字表示,可以用于显示。

* reltimefloat(): 将reltime()的值转换成浮点数。如:1500367382.226327。

reltime的重要性在于,是我们用于性能测试的重要手段。

例,我们想测量一下MyFunction执行用了多长时间:

                        let start = reltime()
                        call MyFunction()
                        let seconds = reltimefloat(reltime(start))

有了reltime,我们的随时数函数可以写得更精确一点:

function GetRand2()
        let l:seed = reltimefloat(reltime())
        let l:value = float2nr(l:seed * 100000) % 100
        return l:value / 100.0
endfunction

最新文章

  1. PHP 分页函数
  2. javascript随笔20160808
  3. idea使用心得(3)-重构初探
  4. HDU3068 最长回文串
  5. jquery非空验证功能
  6. hpp头文件与h头文件的区别
  7. spring中context:property-placeholder/元素
  8. [php] 处理图像
  9. bzoj3252
  10. jquery之css()改变字体大小,颜色,背景色
  11. asp.net mvc表单提交的几种方式
  12. Java程序在向mysql中插入数据的时候出现乱码
  13. POJ 3623 Best Cow Line, Gold(字符串处理)
  14. POJ--2923--Relocation--如压力DP
  15. 多线程——@synchronized(object)
  16. NodeJs之进程守护
  17. 《前端之路》之 JavaScript 进阶技巧之高阶函数(下)
  18. Linux unalias命令 取消别名
  19. python网络爬虫笔记(四)
  20. VeeamOne(Free Edition 9.5 )-安装与配置

热门文章

  1. Linux 软件看门狗 watchdog 喂狗
  2. python2与python3语法区别之_重定向
  3. [BZOJ1117]救火站gas
  4. from: can't read /var/mail/xxx 解决方法
  5. spring boot2.1读取 apollo 配置中心3
  6. javascript脚本程序执行消耗的时间
  7. QT 样式表基础知识
  8. vue的seo方案 prerender-seo-plugin
  9. POJ3768 Katu Puzzle
  10. Android通过soap2访问webservice遇到HTTP request failed, HTTP status: 302的问题