Vim 运行测试前自动保存?

Vim 运行测试前自动保存?,vim,rspec,automated-tests,Vim,Rspec,Automated Tests,我对Vim还比较陌生,但这是我一直在思考的问题 假设您正在使用rspec.vim插件,并且希望运行规范。您将RunCurrentSpecFile()函数映射到s 因此,如果您对规格进行更改,则需要5次按键才能重新运行: <Esc>:w<Leader>s :ws 但是,您何时会希望在不首先保存文件的情况下运行规范?那么,为什么不映射s,这样它可以保存文件,然后运行规范。这样您就可以保存两次击键: <Esc><Leader>s s 我不是问在.

我对Vim还比较陌生,但这是我一直在思考的问题

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

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

<Esc>:w<Leader>s
:ws
但是,您何时会希望在不首先保存文件的情况下运行规范?那么,为什么不映射
s
,这样它可以保存文件,然后运行规范。这样您就可以保存两次击键:

<Esc><Leader>s
s
我不是问在
.vimrc
中执行此操作的机制,我确信它非常简单。我在问为什么我从来没有见过任何人用这种方式配置Vim。我缺少了什么缺点吗?

在函数中添加
exec“w”
RunCurrentSpecFile()

这是我的运行结果函数:

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

详细信息可以查看

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

let g:rspec_command = ":w | !clear && echo rspec {spec} && rspec {spec}" 
如果您使用spring加速测试(我绝对推荐),请使用:


可能是因为您看到的vim配置子集并不代表rspec.vim用户的全部配置。或者,您可能错过了映射到Esc的自动保存命令。或者可能是因为Esc通常不被考虑。或者可能是因为你看到配置的人并不在乎,因为他们在幕后使用了观察者。这些都是有效的观点!
let g:rspec_command = ":w | !clear && echo bin/rspec {spec} && bin/rspec {spec}"