Vim Ruby多行方法缩进

问题描述 投票:0回答:2

我对从vim设置中获得的默认换行符有疑问。我认为我正在使用的唯一相关的插件是vim-ruby。

我想要这样的代码自动缩进:

let(:account) do
  create :account,
    store: build(:live_store,
                 shop_version: build(:shop_version,
                                      name: "Example"
                                     )
                )
end

改为像这样自动缩进:

let(:account) do
  create :account,
    store: build(:live_store,
      shop_version: build(:shop_version,
        name: "Example"
      )
    )
end

这有意义吗,还是我不在杂草丛中?我发现默认值很难看,尤其是在尝试强制使用80个字符行时令人沮丧。

谢谢!

ruby vim indentation
2个回答
0
投票

我发现了一个合理的解决方法。如果我在代码中使用哈希字面量,Vim会按照我想要的方式自动缩进。例如,键入上面的示例可以正常工作:

let(:account) do
  create :account,
    store: build(:live_store, {
      shop_version: build(:shop_version, {
        name: "Example"
      })
    })
end

这感觉是一个足够合理的折衷。


0
投票

vim-ruby如此深入缩进您的示例的原因是支持这种编码风格:

let(:account) do
  create :account,
    store: build(:live_store,
                 shop_version: build(:shop_version,
                                     name: "Example"))
end

很多人都喜欢这种“悬挂”风格,这就是为什么如果在同一行的第一个参数上使用圆括号,vim-ruby会缩进的原因。正如@Amadan指出的那样,您可以将所有参数放在换行符上:

let(:account) do
  create :account,
    store: build(
      :live_store,
      shop_version: build(
        :shop_version,
        name: "Example"
      )
  )
end

或者,我首选的支持缩进样式使用大括号:

let(:account) do
  create :account,
    store: build(:live_store, {
    shop_version: build(:shop_version, {
      name: "Example"
    })
  })
end

缩进首选项有很多不同的组合,我们在支持的可变性方面受到限制(我是维护者)-代码陈旧且充满了边缘情况。恐怕这三种样式基本上就是它,希望您可以调整编码样式以达成折衷。可能是在将来的某个时刻,我坐下来尝试一些根本性的改变,但这是一个很难找到时间和精力的项目。

© www.soinside.com 2019 - 2024. All rights reserved.