当前位置: 移动技术网 > IT编程>脚本编程>Ruby > ruby开发vim插件小结

ruby开发vim插件小结

2017年12月08日  | 移动技术网IT编程  | 我要评论
在开始编写插件之前,你需要确认 vim 是否支持 ruby,通过以下命令来判别: $ vim --version | grep +ruby 如果输出为空

在开始编写插件之前,你需要确认 vim 是否支持 ruby,通过以下命令来判别:

$ vim --version | grep +ruby

如果输出为空,则表示你当前的vim不支持ruby,需要重新编译一下,并启用对ruby的支持。

顺便说下我当前的环境是:

vim 7.4
ruby 2.1.0
环境检查没有问题那么就开始吧。 在~/.vim/plugin目录下创建一个 demo.vim 文件。

在开头写上以下代码:

if !has('ruby')
 echo "error: required vim compiled with +ruby"
 finish
endif

这段代码就是用 viml 编写的,它将检查 vim 是否支持 ruby。

接下来再判断该插件是否已经加载过了,以免重复加载:

if exists('g:loaded_ruby_demo_plugin')
 finish
endif
let g:loaded_ruby_demo_plugin = 1

所有的检查都没有问题,则开始插件的正文了。先定义一个函数。

function! demofun1()
ruby<<eof
buf = vim::buffer.current
puts "current buffer name: #{buf.name} number: #{buf.number} length: #{buf.length}"
eof
endfunction

function与endfunction是vim中用于定义函数的,在”ruby<<eof”和”eof”之间部分的是ruby代码。这个例子是输出当前缓冲区的名字、编号以及总行数。 执行命令:call demofun1(),应该就可以看到输出结果了。

然后再举个例子说下函数的参数处理。

function! demofun2(arg1)
ruby<< eof
puts "you input: #{vim.evaluate('a:arg1')}"
eof
endfunction

这里定义了一个函数接收一个参数,然后将其输出。使用 vim.evaluate 将vim的变量转化为ruby的变量。

为了方便我们再定义两个命令,以简化对这两个函数的调用。

command! -nargs=0 demofun1 call demofun1()
command! -nargs=1 -rang demofun2 call demofun2(<f-args>)

要获取完整的代码可以访问:

接下来再简单说下vim中ruby的使用。

vim为ruby提供了一个vim模块,通过它可以在ruby中访问vim的接口。同时还提供了两个全局变量:$curwin、$curbuf,它们分别代表了当前窗口对象以及当前缓冲区对象。

vim模块中有 buffer 和 window 两个对象,分别是用来对缓冲区和窗口进行操作的。同时vim模块还提供了message、set_option、command和evaluate四个函数。

想要查看更多的帮忙信息,可以在vim中执行如下命令:

:help ruby

好了,先写这么多吧,其余的自己去尝试吧。

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网