【发布时间】:2011-12-13 17:45:35
【问题描述】:
是否有人将她的 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-script 并且可能没有足够的经验,但我必须说我尝试过的大多数插件只是搞砸了我的编辑器配置......
【问题讨论】:
-
我自己使用的是
ctab.vim(2.6 版),它似乎确实可以实现您想要实现的目标,即在输入上面的代码片段时,我不必输入任何内容制表符或空格字符使其格式正确。
标签: vim alignment indentation auto-indent