开发工具 在 Vim 中运行 RSpec 测试

lvjian700 · 2016年01月19日 · 最后由 skywind3000 回复于 2016年10月31日 · 2866 次阅读

自从转到 Ruby,Vim 已成为平时主要的开发工具。Vim 配合 iTerm 2 能很好的满足平时的开发需求。但是在运行 RSpec 的时候总是需要切换到 iTerm,尤其是在运行单个测试时,总是感觉不方便。

本文介绍插件 vim-rspec 插件,它可以直接从 Vim 中直接运行 RSpec:

vim-rspec

安装

vim-rspec 需要使用 vundle

Plugin 'thoughtbot/vim-rspec'

配置和使用

将如下配置添加到 .vimrc 中:

" RSpec.vim mappings
map <Leader>t :call RunCurrentSpecFile()<CR>
map <Leader>s :call RunNearestSpec()<CR>
map <Leader>l :call RunLastSpec()<CR>
map <Leader>a :call RunAllSpecs()<CR>

" Link to current terminal app
let g:rspec_runner = "os_x_iterm"

在我的 Vim 中,<Leader> 键直接使用的 /

let mapleader = "/"

上述配置等同:

  • /t,运行当前测试
  • /s,运行当前的 it
  • /l,运行上一次测试
  • /a,运行所有测试

写在最后

Vim 是一个非常强大的工具,它可以让 Developer 双手保持的键盘上,熟练的使用 Vim 可以让我们保持专注,达到眼到手到的境界。对于如何学习 Vim,唯有大量的使用才能提升 Vim 的能力。经过 10000 小时的练习后,Vim 会是 Developer 手上的瑞士军刀。

tpope/vim-rails 能直接调用 rake

  • :Rake 运行当前文件对应的测试用例
  • :.Rake 运行当前光标下的测试用例

搭配 tmux 和 tpope/vim-dispatch 的效果看我录的一段演示

#1 楼 @nykma :Rake 好像只对 Rails 工程生效?

vim 里有没有哪个快捷键是可以自动调整缩进的?

#3 楼 @adamshen {N}> 或者 V{N}G>

:plus1: 很好的分享!

#3 楼 @adamshen 选中需要缩进的行,然后 ==自动缩进 手动缩进参考 4 楼方法

indent

最后一步是用 == 做的 auto indent

#4 楼 @hiveer 谢谢你。。。

#6 楼 @lvjian700 学习了,谢谢你。。。

#3 楼 @adamshen == 将当前行自动缩进 5== 将当前在内的 5 行自动缩进 =G 将当前行到最后一行的代码自动缩进 gg=G 自动缩进所有

跟官网上的一样,只不过我的不是 /t 还是 \t mac 系统

折腾半天,还不如用 IDE,非要把 VIM 搞成这样真是浪费生命。

@rubyfan1 你知道 Vim 和 IDE 各自的优缺点吗?这种太随意的评价👎

#12 楼 @hiveer 用 VIM,无非是嫌 IDE 慢、大、要安装、有些不能扩展和定制,最主要不能秀高端。用 VIM 不用 IDE,虽然自己爽,但会一定程度上降低代码质量,会坑队友。

#13 楼 @rubyfan1 有段时间我也沉迷于 vim,后来全部换成了 ide。

@rubyfan1 我一直在用 Vim,但是并没有降低我的代码质量,也没有因为用 Vim 而坑了队友。IDE 的特点就是集成了很多的工具,一个 IDE 就是一个集成的开发环境。Vim 仅仅专注于文本编辑,而我们每天的工作也就是把一段代码写出来,然后重构,重构……再提交。在编辑文本的速度和便捷程度上目前没有哪个 IDE 可以和 Vim 相比。所以,我觉得他们各有各的特点,用或不用,好用与否都因人而异。其实说这么多就是因为你那句话:

非要把 VIM 搞成这样真是浪费生命

其实就是想说,这并不是在浪费生命!

楼主笔误了吧,/ 是搜索,<leader> 键怎么会默认成 / 了,你什么系统呢 😄

#16 楼 @ruchee 好像是我改了。多谢提醒。

BTW: 平时用 :/ 搜索,基本不直接用 /。 = =||

别用这种诡异的 tmux 分屏方式了,Vim 8.0 出来后,我开发了个更顺手的插件,使用 8.0 原生异步 API,提供异步 git push,异步编译,异步更新 tags, 异步 grep 等功能,结果实时显示在 Vim 中的 quickfix 窗口,错误会通过 errorformat 进行匹配,体验比 tmux 分屏/vim-dispatch 好多了: https://github.com/skywind3000/asyncrun.vim

需要 登录 后方可回复, 如果你还没有账号请 注册新账号