(每个块都是一个标签)
{
>--long a = 1,
>-->--..b = 2,
>-->--..c = 3;
}
可以这样做:
{
>--long a = 1,
>--.....b = 2,
>--.....c = 3;
}
因此,我认为关于制表符和空格的问题很多,但没有一个提供某些Just Works解决方案:
https:/ /stackoverflow.com/questions/8493705/vim-use-tabs-for-indentation-spaces-for-alignment-with-c-source-files
https://stackoverflow.com/questions/29208431/vim- indent-with-tabs-align-with-spaces
https://stackoverflow.com/questions/6504507/vim-indenting-and-alignment-combining-spaces-and-tabs
我实际上正在使用:
set ai
set cindent
set cinoptions=(0,:0,u0,U0,g0)
我尝试了Smart Tab插件,该插件似乎运行良好,但是当我尝试
gg=G
时,我遇到了一些奇怪的错误:Error detected while processing function CtabRedoIndent..<SNR>12_CheckAlign:
line 11:
E108: No such variable: "b:ctab_lastalign"
Press ENTER or type command to continue
Error detected while processing function CtabRedoIndent:
line 10:
E170: Missing :endwhile
此讨论请参见ms太老了,所以现在,到2015年,有正式的解决方案可以解决?
#1 楼
真正自动地做到这一点是困难的。 Vim不知道什么是“缩进”和什么是“对齐”。可以这么说,Smart Tabs插件旨在满足您的需求。我发现它对于C文件相当有效,但是有一些警告。例如,它会破坏Python文件,并有时会对C文件做一些意想不到的(无论如何对我来说)。事实证明它会破坏某些内容,应该告诉您谨慎进行...
#2 楼
您提到的Smart Tabs插件差不多可以得到。最初,我遇到了与您相同的错误,并放弃了,但是最终花了几分钟来修复它。尝试应用以下修补程序: las,还没有新版本。#3 楼
简单地使用以下脚本在vim中执行缩进执行单个文件的缩进的脚本
#!/bin/bash
#Author: Ankit shah
#Enter file name to indent as argument
file=
vim $file -c "normal gg=G" -c "wq"
#Use expand command to turn tabs into spaces. Code uniform across different vim environment
expand -t 4 $file $file
评论
这不是问题的答案
–马丁·图尔诺伊(Martin Tournoij)
16年1月31日,0:04
评论
emacswiki.org/pics/static/TabsSpacesBoth.png我没有为此的映射,只是一个主意...但是,如果您在按Tab键时将Vim设置为插入制表符(您想要的宽度),该怎么办,但是如果您按Shift键,实际上将一个制表符扩展为空格-标签?这样会使对齐简单吗?
(注:在xkcd漫画的“宗教战争”论坛中,有一个关于“标签与空间”的精彩讨论。Enjoy;)