是否有人以使用硬制表符作为缩进字符的方式设置 vim,但使用空格进行对齐?我遇到的问题是,当开始像
这样的连续行时if (condition1 && (anotherlongcondition || /* <-- Here I insert a newline */
|-------|------- whatever /* some additional alignment added automatically */
,然后 cin
(这对我来说是必须的)以我喜欢的位置方式添加一些对齐方式,但这种对齐方式是使用尽可能多的硬制表符创建的,并用空格填充其余部分(正如我试图想象的那样) .
所以,简而言之,cin
似乎并没有真正区分缩进和对齐。我真的很希望上面示例中添加的所有对齐都是空格。这样,在切换 ts
时,可以正确保留对齐方式。暂时。
为了再次澄清,我希望能够编写以下代码,而不要按 <TAB>
或<SPACE>
在任何行中的第一个非空白字符前面(并且不执行任何手动移位或其他操作):
void foo(int bar)
{
|-------somestatement;
|-------if (somecondition && (someothercondition ||
|------- whatevercomesnext))
|-------|-------dosomething;
}
我已经尝试过ctab.vim
,但它专注于编辑带有软制表符的对齐线,这对我来说似乎很愚蠢,因为手动对齐是一项提供单步细化而不是制表符宽度步长细化的任务。我没有改变方式cin
使用混合制表符和空格进行对齐。
我还没有找到任何内置的方法来实现这一点。也许仍然有一个?无论如何,我怀疑是否有一个插件可以做到这一点。虽然我承认我自己不会编写 vim 脚本并且可能没有足够的经验,但我必须说我尝试过的大多数插件只会搞乱我的编辑器配置......
最佳答案
除了 :set cino=(1 之外,如果您还没有遇到过“preserveindent”和“copyindent”选项,您可能还对它们感兴趣。它们并不能完全解决您的问题,但确实可以尽力提供帮助。
关于Vim:使用制表符缩进,使用空格与 C 源文件对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8493705/