如何在 switch 语句中使用 cinoptons 和 cinkeys 设置正确的缩进?
How to set correct indentation with cinoptons and cinkeys in switch statement?
我正在使用 C++ 的缩进样式,如 LLVM 和 clang 格式。我需要这样的选项:
set cinoptions=:0,g0,(0,Ws,l
set autoindent
set smartindent
set cinkeys=0{,0},0),:,0#,!^F,o,O,e
set cinwords=if,else,while,do,for
问题在于,每当我引用名称空间并按 名称空间: - 它会触发 :0 选项。当按下第二个时: - 它触发回来。是的,一切都是正确的。但总是触发: - 对我的大脑非常不利。我想要静态行为。不是每当我尝试使用一些名称空间并按双:。我只需要为 case 在 switch 语句中触发 :0。我希望你能明白我在说什么。请帮忙
switch(number) {
case 4: // i wanna triggering of:0 only for this line of code.
cout << "Good indentation";
break;
}
if (true) {
namespace: // NOT FOR THAT!
namespace:: // triggers back - all is correct. First triggering is very bad!
}
您正在寻找L0
;参见 :h cino-L
。默认情况下为 -1,这意味着跳转到第 1 列。还值得注意的是文档中的措辞:“如果 N 为非负数,则标签的缩进将是现行缩进减去 N。” -- 这就是 N = 0
起作用的原因。它通过不减去任何东西来保留当前的缩进级别,并通过它避免跳跃。
它只影响 labels 而不是 switch 语句的 case x:
。请注意,这意味着如果您希望标签以不同方式缩进,但又不想跳转到 ::
运算符,您可能需要找到支持该类型缩进的 LSP,因为 cino 不支持那。您要么不得不忍受它跳到第一个 :
并返回到 ::
,要么没有标签缩进自动不同于您的正常源代码缩进,并且 =
重置任何您对标签缩进所做的手动更改。
无论如何,这也意味着 :0
从未真正被触发过。 cino
的默认选项意味着 L-1
在 namespace:
上触发 - 开关盒标签与普通标签不同,这意味着另一个选项是罪魁祸首。
最后,为了完整起见:
set cinoptions=:0,g0,(0,Ws,l,L0
我正在使用 C++ 的缩进样式,如 LLVM 和 clang 格式。我需要这样的选项:
set cinoptions=:0,g0,(0,Ws,l
set autoindent
set smartindent
set cinkeys=0{,0},0),:,0#,!^F,o,O,e
set cinwords=if,else,while,do,for
问题在于,每当我引用名称空间并按 名称空间: - 它会触发 :0 选项。当按下第二个时: - 它触发回来。是的,一切都是正确的。但总是触发: - 对我的大脑非常不利。我想要静态行为。不是每当我尝试使用一些名称空间并按双:。我只需要为 case 在 switch 语句中触发 :0。我希望你能明白我在说什么。请帮忙
switch(number) {
case 4: // i wanna triggering of:0 only for this line of code.
cout << "Good indentation";
break;
}
if (true) {
namespace: // NOT FOR THAT!
namespace:: // triggers back - all is correct. First triggering is very bad!
}
您正在寻找L0
;参见 :h cino-L
。默认情况下为 -1,这意味着跳转到第 1 列。还值得注意的是文档中的措辞:“如果 N 为非负数,则标签的缩进将是现行缩进减去 N。” -- 这就是 N = 0
起作用的原因。它通过不减去任何东西来保留当前的缩进级别,并通过它避免跳跃。
它只影响 labels 而不是 switch 语句的 case x:
。请注意,这意味着如果您希望标签以不同方式缩进,但又不想跳转到 ::
运算符,您可能需要找到支持该类型缩进的 LSP,因为 cino 不支持那。您要么不得不忍受它跳到第一个 :
并返回到 ::
,要么没有标签缩进自动不同于您的正常源代码缩进,并且 =
重置任何您对标签缩进所做的手动更改。
无论如何,这也意味着 :0
从未真正被触发过。 cino
的默认选项意味着 L-1
在 namespace:
上触发 - 开关盒标签与普通标签不同,这意味着另一个选项是罪魁祸首。
最后,为了完整起见:
set cinoptions=:0,g0,(0,Ws,l,L0