在Vim脚本中查找测试名称

在Vim脚本中查找测试名称,vim,Vim,我已经写了一个简单的脚本,但我正在寻找一个更好的实现 这是我的理想情景。我坐在一个测试文件中,其中包含许多类似以下的测试: def test_cleans_number number = PhoneNumber.new("(123) 456-7890").number assert_equal "1234567890", number end def test_cleans_a_different_number number = PhoneNumber.ne

我已经写了一个简单的脚本,但我正在寻找一个更好的实现

这是我的理想情景。我坐在一个测试文件中,其中包含许多类似以下的测试:

  def test_cleans_number
    number = PhoneNumber.new("(123) 456-7890").number
    assert_equal "1234567890", number
  end

  def test_cleans_a_different_number
    number = PhoneNumber.new("(987) 654-3210").number
    assert_equal "9876543210", number
  end

  def test_cleans_number_with_dots
    number = PhoneNumber.new("456.123.7890").number
    assert_equal "4561237890", number
  end
我已经编写了这个vim脚本,它允许我将光标放在测试的定义行上,它将运行该测试,并且只运行该测试:

function! RunNearestTest()
  let line = getline('.')
  let test_name = substitute(line, 'def ', "", "g")
  exec ":!ruby " . @% . " -n " . test_name
endfunction

" run test runner
map <leader>T :call RunNearestTest()<cr>
函数!runnearestest()
let line=getline('.'))
让test_name=substitute(行'def','',“g”)
exec:“!ruby”@%。“-n”。测试名称
端功能
“运行测试运行程序”
映射T:调用RunNearestTest()
如果从脚本中看不明显,我需要测试名称来运行该测试。在第一个示例中,测试名称是
test\u cleans\u number

正如我所说,这很好,但我想做的是在测试中的任何一行,它会知道跳转到前面的
def
,获取
test\u name
,然后运行执行。我想
searchpair()
将是我的目标,但遗憾的是我找不到足够的文档

我很乐意在此提供您可能需要的任何文件或附加内容,谢谢!

函数返回匹配行的编号:

function! RunNearestTest()
  let line_text = getline(search('def ', 'bcW'))
  let test_name = substitute(line_text, 'def ', "", "g")
  exec ":!ruby " . @% . " -n " . test_name
endfunction
请参见
:help search()

函数返回匹配行的编号:

function! RunNearestTest()
  let line_text = getline(search('def ', 'bcW'))
  let test_name = substitute(line_text, 'def ', "", "g")
  exec ":!ruby " . @% . " -n " . test_name
endfunction
请参见
:help search()

函数返回匹配行的编号:

function! RunNearestTest()
  let line_text = getline(search('def ', 'bcW'))
  let test_name = substitute(line_text, 'def ', "", "g")
  exec ":!ruby " . @% . " -n " . test_name
endfunction
请参见
:help search()

函数返回匹配行的编号:

function! RunNearestTest()
  let line_text = getline(search('def ', 'bcW'))
  let test_name = substitute(line_text, 'def ', "", "g")
  exec ":!ruby " . @% . " -n " . test_name
endfunction

请参阅
:帮助搜索()

啊哈!你只是缺少了我的一个要求,在我得到由
search
生成的行之后,我需要在它上面运行let
getline
,以获得文本。谢谢!哦!我出于某种原因忘记了那部分。啊哈!在我得到由
search ,我需要在上面运行let
getline
来获取文本。谢谢!哎哟!我不知什么原因忘记了那部分。啊哈!你只是缺少了我的一个要求,在我获取了由
search
生成的行之后,我需要在上面运行let
getline
来获取文本。谢谢你!哎哟!我忘记了那部分是为了这么久me reason.Ah-ha!你只是错过了我的一个要求,在我得到由
search
生成的行之后,我需要在它上面运行let
getline
,以获得文本。谢谢!哎呀!我出于某种原因忘记了那部分。侧栏:
[m
/
]m
将移动到上一个/下一个方法定义侧栏:
[m
/
]m
将移动到上一个/下一个方法定义侧栏:
[m
/
]m
将移动到上一个/下一个方法定义侧栏:
[m
/
]m
将移动到上一个/下一个方法定义