7

是否有人以使用硬制表符作为缩进字符的方式设置她的 vim,但使用空格进行对齐?我遇到的问题是,当开始像

if (condition1 && (anotherlongcondition || /* <-- Here I insert a newline */
|-------|-------   whatever  /* some additional alignment added automatically */

,然后cin(这对我来说是必须的)以我喜欢的方式添加一些对齐位置,但是这种对齐是使用尽可能多的硬制表符创建的,并用空格填充其余部分(正如我试图想象的那样)。

因此,简而言之,cin似乎并没有真正区分indentationalignment。我真的很喜欢上面示例中所有添加的对齐方式都是空格。这样,在ts临时切换时,对齐将被正确保留。

为了再次清楚起见,我希望能够编写以下代码,永远不要在任何行中的第一个非空白字符之前按下<TAB>或前面(并且不进行任何手动移位或其他操作):<SPACE>

void foo(int bar)
{
|-------somestatement;
|-------if (somecondition && (someothercondition ||
|-------                      whatevercomesnext))
|-------|-------dosomething;
}

我已经尝试过ctab.vim,但它侧重于编辑带有软制表符的对齐线,这对我来说似乎很愚蠢,因为手动对齐是一项提供 1 步细化而不是制表符宽度步细化的任务。我没有改变cin使用混合制表符和空格进行对齐的方式。

我还没有设法找到任何内置的方法来实现这一点。也许还有一个?无论如何,我怀疑是否有一个插件可以做到这一点。虽然我承认自己没有 vim-script 并且可能没有足够的经验,但我必须说我尝试过的大多数插件只是搞砸了我的编辑器配置......

4

2 回答 2

3

除了你的 :set cino=(1 之外,如果你还没有遇到过 'preserveindent' 和 'copyindent' 选项,你可能也会感兴趣。它们并不能完全解决你的问题,但它们确实有一定的作用向帮助。

于 2011-12-13T20:51:15.147 回答
1

好的,对不起这个问题。我终于找到了一些很好的材料。

http://vim.1045645.n5.nabble.com/Indent-with-tabs-align-with-spaces-td1183279.html

总而言之,目前 vim 不够灵活,无法轻松完成。

我目前的解决方法是:set cinoptions=(1在开始续行时仅添加一个对齐单元。这样,我可以确定添加的对齐是一个空格(只要我没有:set ts=1,至少)并手动添加大量的空格。就速度而言,这仍然可以,而且对我来说似乎是最不分散注意力的行为!

于 2011-12-13T18:15:37.123 回答