Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim:使用制表符进行缩进,使用空格与C源文件对齐_Vim_Alignment_Indentation_Auto Indent - Fatal编程技术网

Vim:使用制表符进行缩进,使用空格与C源文件对齐

Vim:使用制表符进行缩进,使用空格与C源文件对齐,vim,alignment,indentation,auto-indent,Vim,Alignment,Indentation,Auto Indent,是否有人在vim设置中使用硬制表符作为缩进字符,但是否使用空格对齐?我的问题是,当开始一个延续行时,如 if (condition1 && (anotherlongcondition || /* <-- Here I insert a newline */ |-------|------- whatever /* some additional alignment added automatically */ 我已经试用过ctab.vim,但它的重点是编辑带有软制表

是否有人在vim设置中使用硬制表符作为缩进字符,但是否使用空格对齐?我的问题是,当开始一个延续行时,如

if (condition1 && (anotherlongcondition || /* <-- Here I insert a newline */
|-------|-------   whatever  /* some additional alignment added automatically */
我已经试用过
ctab.vim
,但它的重点是编辑带有软制表符的对齐行,这对我来说似乎很愚蠢,因为手动对齐是一项提供一步细化而不是制表符宽度步细化的任务。我没有改变
cin
使用混合制表符和空格进行对齐的方式


我还没有找到任何内在的方法来实现这一点。也许还有一个?无论如何,我怀疑是否有插件可以做到这一点。虽然我承认我自己不编写vim脚本,可能没有足够的经验,但我必须说,我尝试的大多数插件只会弄乱我的编辑器配置…

好的,很抱歉这个问题。我终于找到了一些好材料

综上所述,目前vim不够灵活,无法轻松实现这一点


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

除了:set cino=(1)如果您还没有遇到过“保留缩进”和“复制缩进”选项,您可能也会对它们感兴趣。它们并不能完全解决您的问题,但它们确实有帮助。

是的,我遇到过它们。但遗憾的是,还有太多的规则都是使用混合制表符计算缩进和缩进的paces…我自己使用的是
ctab.vim
2.6版,它似乎确实达到了您想要的效果,即在上面的代码片段中键入时,我不必键入任何制表符或空格字符来正确格式化它。
void foo(int bar)
{
|-------somestatement;
|-------if (somecondition && (someothercondition ||
|-------                      whatevercomesnext))
|-------|-------dosomething;
}