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

标签 vim alignment indentation auto-indent

是否有人以使用硬制表符作为缩进字符的方式设置 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/

相关文章:

Vim在复制粘贴时缩进每一行代码

python - 为什么 vim 红色突出显示 Django 模板中的结束标签?

ios - 在 TableView 行中动态对齐 UITextView

java - 使用 Apache Batik 纠正 SVG 文件的缩进( pretty-print )

vim - vim中将制表符替换为空格

c++ - 如何进行 C++ 对齐数组分配?

html - 将不同的 div 放置在父 div 的底部,彼此相邻

c++ - 是否有缩进 C++ 程序的实用程序

Emacs 自定义缩进

获取所有映射的 Vim 函数