运行测试前自动保存?

时间:2014-04-11 15:51:40

标签: vim rspec automated-tests

我对Vim很新,但这是我一直想知道的事情。

假设您正在使用rspec.vim插件,并且您想要运行规范。您将RunCurrentSpecFile()函数映射到<Leader>s

因此,如果您对规范进行了更改,则需要5次击键才能重新运行它:

<Esc>:w<Leader>s

但是你什么时候想要运行规范而没有首先保存文件?那么为什么不映射<Leader>s以便它保存文件然后运行规范。所以你节省了两次击键:

<Esc><Leader>s

我不是在.vimrc询问这样做的机制,我相信这很简单。我在质疑为什么我从来没有看到任何人用这种方式配置Vim。我缺少一些缺点吗?

2 个答案:

答案 0 :(得分:0)

在您的功能中添加exec "w" RunCurrentSpecFile()

这是我的 RunResult 功能:

function! marslofunc#RunResult()
  let mp = &makeprg
  let ef = &errorformat
  let exeFile = expand("%:t")
  exec "w"
  if "python" == &filetype
    setlocal makeprg=python\ -u
  elseif "perl" == &filetype
    setlocal makeprg=perl
  elseif "ruby" == &filetype
    setlocal makeprg=ruby
  elseif "autohotkey" == &filetype
    setlocal makeprg=AutoHotkey
  endif
  set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m
  silent make %
  copen
  let &makeprg = mp
  let &errorformat = ef
endfunction

可以查看详细信息here

答案 1 :(得分:0)

正如我对Vim的了解越来越多,我也想知道如何加快我的工作流程并获得与你相同的想法。我通过将此行添加到.vimrc来实现此行为:

let g:rspec_command = ":w | !clear && echo rspec {spec} && rspec {spec}" 

如果您使用弹簧加速测试(我绝对推荐),请使用:

let g:rspec_command = ":w | !clear && echo bin/rspec {spec} && bin/rspec {spec}"