ruby开发vim插件小结

在开始编写插件之前,你需要确认 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>)

要获取完整的代码可以访问: https://gist.github.com/wusuopu/c1182efefa85d4f6839b

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

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

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

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

:help ruby

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

(0)

相关推荐

  • Vim命令高级用法

    1.启动-R  只读方式打开,但打开后如果有权限,可以强制执行保存.-c (command) 加载后执行命令,比如"vim -c /most myfirst" 打开该文件后直接向后搜索most.更多的可以参考 -h 2.同时编辑多个文件vim [file1] [file2] ... 此时 :ar 查看当前编辑的文件名 :n  切换当前编辑的文件 另外还有 :e  切换到新文件 :w  读取已存在的文件并将其内容放入正在编辑的文件中 :w [起始行][终结行] [文件名]  将当前文件部

  • Python开发如何在ubuntu 15.10 上配置vim

    1,安装vim,你可以使用ubuntu 自带的apt-get 工具安装. apt-get install vim-gnome 2,安装成功后,进行配置 1>首先进行自动提示补全的配置(pydiction) 从官方上下载http://www.vim.org/scripts/script.php?script_id=850最新的即可,解压缩后,进入解压缩后的目录,执行如下命令 # cp python_pydiction.vim /usr/share/vim/vim74/ftplugin # mkdi

  • 你可能不知道的Vim使用小技巧

    一.用拷贝的内容替换 当发生拼写错误或者想要重命名标识符时,就需要用拷贝的内容来替换当前的名字.比如调用函数时写错了: void letus_fuckit_with_vim(){ cout<<"great!"; } let_fuckat_with_vom(); 只需要先复制上面的函数名,再把光标切换到拼错的词首.然后按下viwp,就替换过来了: void letus_fuckit_with_vim(){ cout<<"great!"; } l

  • linux系统中使用Vim删除偶数行或者奇数行

    删除偶数行的方法如下: :g/^/+1 d 上面用到了:gbobal命令,gbobal命令格式如下: :[range]global/{pattern}/{command} global命令实际上是分成两步执行:首先扫描[range]指定范围内的所有行,给匹配{pattern}的行打上标记:然后依次对打有标记的行执行{command}命令,如果被标记的行在对之前匹配行的命令操作中被删除.移动或合并,则其标记自动消失,而不对该行执行{command}命令.{command}可以是一个ex命令,也可以

  • 搭建Vim为自定义的PHP开发工具的一些技巧

    虽然 vim 本质上只是一个编辑器.但只要配合一些适当的插件, vim 也能变成一个全功能的 IDE .笔者使用 vim 已经有挺长一段时间了,经过反复的试验,配置了一个高效的 PHP 开发环境,实为居家旅行.谋财害命.杀人越货必备之良品. 安装 vim 鉴于大多数读者都是使用Windows 环境,所以本文就以 Windows 作为运行环境.不过由于 vim 出色的跨平台特性,配置文件只需简单修改就可以在 Linux 版本的 vim 中使用. 目前 vim 的最新版本是 7.2 ,如果没有特别原

  • 手把手教你将Vim改装成一个IDE编程环境(图文) 吴垠

    By: 吴垠 Date: 2007-09-07 Version: 0.5 Email: lazy.fox.wu#gmail.com Homepage: http://blog.csdn.net/wooin Copyright: 该文章版权由吴垠和他可爱的老婆小包子所有.可在非商业目的下任意传播和复制.对于商业目的下对本文的任何行为需经作者同意. 联系方式:lazy.fox.wu#gmail.com 1 写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人

  • VIM中设置php自动缩进为4个空格的方法详解

    代码自然少不了文本编辑利器vim,自动缩进是用制表符的,即便自己删掉制表符改成4个空格,也会在下一层次缩进中继续用制表符,这就造成了空格和制表符混用 可以修改.etc/vimrc的信息: 其中相关变量含义:     变量名     缩写      含义 (no)autoindent  ai   自动缩进,即为新行自动添加与当前行同等的缩进. (no)cindent     ci   类似C语言程序的缩进 (no)smartindent si   基于autoindent的一些改进      变量

  • Python 自动补全(vim)

    一.vim python自动补全插件:pydiction 可以实现下面python代码的自动补全: 1.简单python关键词补全 2.python 函数补全带括号 3.python 模块补全 4.python 模块内函数,变量补全 5.from module import sub-module 补全 想为vim启动自动补全需要下载插件,地址如下: http://vim.sourceforge.net/scripts/script.php?script_id=850 https://github

  • PHP语法自动检查的Vim插件

    由于最近写PHP比较多,偶尔手误少写个分号之类的语法错误难免,一般的检查方式是回到命令行运行 php -l ,或者升级一下直接在Vim里运行 :!php -l % ,或者再将此绑定为快捷键,如 :map <F5> :!php -l %<CR> ,每当按F5便可立即执行语法检查.但还是觉得略有不爽,因为很多IDE是实时检查的,语法错误会提示在代码行的旁边.虽然实时检查未必有必要,但自动检查要比手动检查方便的多,比如在php文件保存时自动执行检查. 于是写了这个 phpcheck.vi

  • ruby开发vim插件小结

    在开始编写插件之前,你需要确认 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 v

  • 使用python开发vim插件及心得分享

    vim有各种强大的插件,这不仅归功于其提供的用来编写插件的脚本语言vimL,还得益于它良好的接口实现,从而支持python等语言编写插件.当vim编译时带有+python特性时就能使用python2.x编写插件,+python3则支持python3.x,可以使用vim --version来查看vim的编译特性. 要使用python接口,可以用:h python来查看vim提供的帮助文档,本文做一个简单的介绍.我们都知道在vim里可以执行bash命令,只需要:!command即可,那么vim里可以

  • VSCode Vue开发推荐插件和VSCode快捷键(小结)

    首先这几个是VSCode推荐Vue开发必备的插件 Vetur -- 语法高亮.智能感知.Emmet等 包含格式化功能, Alt+Shift+F (格式化全文),Ctrl+K Ctrl+F(格式化选中代码,两个Ctrl需要同时按着) EsLint -- 语法纠错 Debugger for Chrome -- 映射vscode上的断点到chrome上,方便调试(配置有点麻烦,其实我没用这个) Auto Close Tag -- 自动闭合HTML/XML标签 Auto Rename Tag -- 自动

  • 详解如何使用Python编写vim插件

    前言 vim是个伟大的编辑器,不仅在于她特立独行的编辑方式,还在于她强大的扩展能力.然而,vim自身用于写插件的语言vimL功能有很大的局限性,实现功能复杂的插件往往力不从心,而且运行效率也不高.幸好,vim早就想到了这一点,她提供了很多外部语言接口,比如Python,ruby,lua,Perl等,可以很方便的编写vim插件.本文主要介绍如何使用Python编写vim插件. 准备工作 1. 编译vim,使vim支持Python 在编译之前,configure的时候加上--enable-pytho

  • PyCharm常用配置和常用插件(小结)

    常用配置 以下配置能使用File -> New Projects Settings -> Settings for New Projects进行配置的尽量用这个配置,因为这个配置是作用于所有新建项目的,不能用的选择File -> Settings 配置Python解释器 文件编码 文件和代码模板 #!/usr/bin/env python3 # -*- coding:utf-8 -*- # @author JourWon # @date ${DATE} # @file ${NAME}.p

  • 值得推荐的Idea十几大优秀插件(小结)

    最近,闲来无事,为了改变一下枯燥的编程环境,特地搜寻了下有助提升代码功力的插件,够装逼,够狂,拽,屌~   绚丽的画面,多彩的跳动,让你区别其他程序猿.产品,测试,开发看到你的界面,眼睛都会发光~  算了,我实在是编不下去,自己去体验吧~ PS: ☆ 半星  ★ 一星   主要是以狂拽屌指数来排名 12.Stackoverflow 这个插件其实是最实用的插件,程序猿遇到的问题,基本都能找到回答,但是它使用的是google搜索引擎,对于,不购买vpn的同学来说,感觉好鸡肋呀~ 选中需要搜索的问题,

  • 使用 Java 开发 Gradle 插件的步骤

    目录 1创建项目 2动手开发 3发布插件 3.1发布到Maven仓库 3.2发布到Gradle官方插件门户 4更多 4.1在插件中添加任务 4.2添加扩展 5小结 6参考内容 Gradle 插件代码可以在 build.gradle 中,buildSrc 项目中,以及独立的插件项目中编写.本文将介绍如何在一个独立的项目中使用 Java 语言编写 Gradle 插件,并发布到仓库中. 1 创建项目 Gradle 插件项目和普通的 Java 项目没有什么不同,普通项目是基于其它三方包进行开发,而 Gr

  • 使用Python编写vim插件的简单示例

    Vim 插件是一个 .vim 的脚本文件,定义了函数.映射.语法规则和命令,可用于操作窗口.缓冲以及行.一般一个插件包含了命令定义和事件钩子.当使用 Python 编写 vim 插件时,函数外面是使用 VimL 编写,尽管 VimL 学起来很快,但 Python 更加灵活,例如可以用 urllib/httplib/simplejson 来访问某些 Web 服务,这也是为什么很多需要访问 Web 服务的插件都是使用 VimL + Python 编写的原因. 在开始编写插件之前,你需要确认 Vim

  • 自己动手开发jQuery插件教程

    因为工作需要,所以这几天琢磨了一下关于jQuery插件开发的问题,经过一天鏖战,终于完成自己动手做的第一个jQuery插件,对于俺这种见了css就头痛的人来说,一天时间8小时,保守估计有5个小时在弄css(我css文盲级别,形容得还不够贴切,如果说文盲不会写字,只会说话,那我是连话都不会说的级别.),好了,废话少说,切入正题. 首先要了解jQuery插件开发分两种,1.类级别的插件开发.2.对象级别插件开发. 什么? 你居然问什么是类级别和什么是对象级别? 类级别你可以理解为拓展jquery类,

随机推荐