Vim:“And”行的黄瓜缩进

时间:2011-03-19 20:57:44

标签: vim cucumber

在Cucumber的Gherkin语言中,它允许缩进和行,如下:

Scenario:
  Given there is a user named Chris
    And I am logged in as Chris
  When I go to the home page
  Then I should see "hi Chris"
    And I should not see "log in"

我喜欢这种缩进样式比同样缩进的样式更好,但是对于Tim Cucumber scripts for Vim,我必须手动缩进And行并手动删除以下行,有时候Vim会自动缩进行,它最终都错了。

在Vim中使用缩进和线条的最佳方法是什么?或者最容易放弃它?

2 个答案:

答案 0 :(得分:2)

我认为您可以自定义indent/cucumber.vim(在线here)以增加以^\s*And开头的行的缩进。

答案 1 :(得分:2)

根据Andy的回答,这是indent/cucumber.vim的差异:

--- .vim/indent/cucumber.vim.bak    2011-03-24 18:44:27.000000000 +0100
+++ .vim/indent/cucumber.vim    2011-03-24 19:09:41.000000000 +0100
@@ -47,6 +47,10 @@
     return indent(prevnonblank(v:lnum-1)) + &sw
   elseif cline =~# '^\s*[^|# \t]' && line =~# '^\s*|'
     return indent(prevnonblank(v:lnum-1)) - &sw
+  elseif cline =~# '^\s*\%(And\|But\)' && line !~# '^\s*\%(And\|But\)' 
+    return indent(prevnonblank(v:lnum-1)) + &sw
+  elseif cline !~# '^\s*\%(And\|But\)' && line =~# '^\s*\%(And\|But\)' 
+    return indent(prevnonblank(v:lnum-1)) - &sw
   elseif cline =~# '^\s*$' && line =~# '^\s*|'
     let in = indent(prevnonblank(v:lnum-1))
     return in == indent(v:lnum) ? in : in - &sw