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
好了,先写这么多吧,其余的自己去尝试吧。
相关推荐
-
你可能不知道的Vim使用小技巧
一.用拷贝的内容替换 当发生拼写错误或者想要重命名标识符时,就需要用拷贝的内容来替换当前的名字.比如调用函数时写错了: void letus_fuckit_with_vim(){ cout<<"great!"; } let_fuckat_with_vom(); 只需要先复制上面的函数名,再把光标切换到拼错的词首.然后按下viwp,就替换过来了: void letus_fuckit_with_vim(){ cout<<"great!"; } l
-
Vim命令高级用法
1.启动-R 只读方式打开,但打开后如果有权限,可以强制执行保存.-c (command) 加载后执行命令,比如"vim -c /most myfirst" 打开该文件后直接向后搜索most.更多的可以参考 -h 2.同时编辑多个文件vim [file1] [file2] ... 此时 :ar 查看当前编辑的文件名 :n 切换当前编辑的文件 另外还有 :e 切换到新文件 :w 读取已存在的文件并将其内容放入正在编辑的文件中 :w [起始行][终结行] [文件名] 将当前文件部
-
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
-
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
-
linux系统中使用Vim删除偶数行或者奇数行
删除偶数行的方法如下: :g/^/+1 d 上面用到了:gbobal命令,gbobal命令格式如下: :[range]global/{pattern}/{command} global命令实际上是分成两步执行:首先扫描[range]指定范围内的所有行,给匹配{pattern}的行打上标记:然后依次对打有标记的行执行{command}命令,如果被标记的行在对之前匹配行的命令操作中被删除.移动或合并,则其标记自动消失,而不对该行执行{command}命令.{command}可以是一个ex命令,也可以
-
手把手教你将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牛人
-
PHP语法自动检查的Vim插件
由于最近写PHP比较多,偶尔手误少写个分号之类的语法错误难免,一般的检查方式是回到命令行运行 php -l ,或者升级一下直接在Vim里运行 :!php -l % ,或者再将此绑定为快捷键,如 :map <F5> :!php -l %<CR> ,每当按F5便可立即执行语法检查.但还是觉得略有不爽,因为很多IDE是实时检查的,语法错误会提示在代码行的旁边.虽然实时检查未必有必要,但自动检查要比手动检查方便的多,比如在php文件保存时自动执行检查. 于是写了这个 phpcheck.vi
-
搭建Vim为自定义的PHP开发工具的一些技巧
虽然 vim 本质上只是一个编辑器.但只要配合一些适当的插件, vim 也能变成一个全功能的 IDE .笔者使用 vim 已经有挺长一段时间了,经过反复的试验,配置了一个高效的 PHP 开发环境,实为居家旅行.谋财害命.杀人越货必备之良品. 安装 vim 鉴于大多数读者都是使用Windows 环境,所以本文就以 Windows 作为运行环境.不过由于 vim 出色的跨平台特性,配置文件只需简单修改就可以在 Linux 版本的 vim 中使用. 目前 vim 的最新版本是 7.2 ,如果没有特别原
-
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类,
随机推荐
- JSON对象 详解及实例代码
- js实现对ajax请求面向对象的封装
- 解决关于IIS gzip不能正常启用的问题
- c#匹配整数和小数的正则表达式
- Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置的详细方法
- bat If 命令常用判断介绍
- iOS评分(评价)星星图打分功能
- 基于javascript制作微博发布栏效果
- Android下拉刷新PtrFrameLayout的使用实例代码
- js 输出内容到新窗口具体实现代码
- SQL Server 2012 创建定时作业(图文并茂,教你轻松快速创建)
- 浅析Cookie中的Path与domain
- 25个 Git 进阶技巧(翻译)
- Java 中的字符串常量池详解
- jquery 检测元素是否存在的实例代码
- Linux中利用grep命令如何检索文件内容详解
- Python中最大最小赋值小技巧(分享)
- Spring Boot外部化配置实战解析
- Python中py文件转换成exe可执行文件的方法
- Java对象转json的方法过程解析