Vim IDE for R

引言

对于需要敲代码的童鞋来说,一个好的IDE往往能够带来事半功倍的效果。之前我所有的算法都是在vim下一行行的敲出来的,好在以往的算法实现起来都比较简单代码量不大,因此一直这么用着也没出什么问题。但是近来发现当一些Map/Reduce算法逻辑比较复杂的时候不太好调试,于是还是希望找一款比较顺手的IDE。

老大推荐了Eclipse+StatET的组合,StatET将R的运行环境整合到了Eclipse中,同时还能提供自动补全和查看当前环境变量的功能。通过安装SVN插件可以很方便的实现版本控制。对于习惯vim的我来说,如果能够沿用vim的光标控制方式就更好了。显然,和我有着同样想法的人不在少数,很方便的就找到了vim插件。挺爽的,一切操作起来似乎完美无瑕!(除了有点小卡)

一个小时后...

咦?不对!怎么进行文本替换?vim插件貌似只提供了查找的功能,却不能替换。好吧,退而求其次,用它自带的替换功能。Ctrl-F,No!居然弹出了个对话框,也就是说需要经常把手从键盘移到鼠标,这怎么能行!而且更重要的是不支持只对某些行进行替换,无奈还是寻求vim下的解决方案吧。

vim果然不愧为最好用的文本编辑器,通过安装几个插件很容易就能满足上面的需求。可以通过NERDTree来管理工程的代码,通过vim-r-plugin来实现R代码的高亮、自动补全、帮助和运行,通过vcscommand来进行版本控制(支持SVN和GIT),通过FuzzyFinder来实现文件的模糊查找。

罗嗦了这么多,赶紧转入正题吧~

NERDTree —— 目录管理

常用命令

:NERDTree打开目录浏览器 - C 切换到光标所在目录 - r 刷新光标所在目录 - u 返回上层目录

vim-r-plugin —— R插件

依赖screen
在~/.vimrc中添加

let g:vimrpluginscreenplugin = 1   "" 是否启用screen插件
let g:vimrpluginnoscreenrc = 1   "" 禁用screenrc
let vimrpluginbuildwait = 240   "" RUpdateObjList的最大等待时间(秒)
let vimrpluginroutmorecolors = 1   "" R输出文件的颜色
let g:vimrpluginunderscore = 0   "" 键入下划线""时是否自动转化为赋值号"<-"

常用命令

  • \rf 启动R
  • \rq 退出R
  • \aa 运行整个文件
  • \ff 运行当前函数
  • \d 运行当前行
  • \ss 运行选中文本
  • \rl 显示R控制台中的变量
  • \rp Print当前对象
  • \rn Names当前对象
  • \rt Structure当前对象
  • \xx 注释
  • \; 添加/对齐右端注释
  • \ro 打开/更新对象浏览器
  • :RUpdateObjList 创建当前载入包中函数名的高亮显示
  • :RUpdateObjListAll 创建所有已安装的R包中函数名的高亮显示
  • Ctrl-x Ctrl-o 函数名补全(注:可以补全的函数必须在Omni list或者当前.GlobalEnv中)
  • Ctrl-x Ctrl-a 显示当前函数的参数列表(注:同上)
  • Ctrl-n or Ctrl-p 在自动补全模式的列表中上下移动

vcscommand —— SVN Integration

常用命令

  • :VCSAdd 向源添加文件
  • :VCSAnnotate 在每行代码前显示提交者
  • :VCSCommit 提交对当前文件的更改
  • :VCSDelete 在源中删除当前文件
  • :VCSLog 显示文件的历史更改情况
  • :VCSRevert 回滚当前文件到源中历史最新版本
  • :VCSReview 查看当前文件的某个特定版本
  • :VCSStatus 查看当前文件的版本信息
  • :VCSUnlock 撤销对当前文件的锁定
  • :VCSUpdate 更新当前文件到源中版本
  • :VCSVimDiff 查看当前文件与历史版本的差别

FuzzyFinder —— 文档查找

依赖L9 library
在~/.vimrc中添加

nmap ,f :FufFileWithCurrentBufferDir<CR>
nmap ,b :FufBuffer<CR>
nmap ,t :FufTaggedFile<CR>

效果

效果图

结语

每一个用Linux的童鞋都有一颗Geek的心。vim就是这么一款非常小巧的编辑器,而且只要有命令行的地方(自动忽略Windows)就能使用,因此即使在家中通过ssh连接也能够毫无差别的进行使用。和Tmux搭配,不但能够用最少的手指移动来管理多个窗口,而且丝毫不用担心网络连接断开。绝对是居家旅行必备之上品!


Published: April 13 2012

blog comments powered by Disqus