我正在尝试使vim与选项卡一起自动缩进,并与空格对齐,但是实际上,vim与选项卡一起缩进,并用选项卡+空格填充对齐。 br />

(每个块都是一个标签)

{
>--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年,有正式的解决方案可以解决?

评论

emacswiki.org/pics/static/TabsSpacesBoth.png

我没有为此的映射,只是一个主意...但是,如果您在按Tab键时将Vim设置为插入制表符(您想要的宽度),该怎么办,但是如果您按Shift键,实际上将一个制表符扩展为空格-标签?这样会使对齐简单吗?

(注:在xkcd漫画的“宗教战争”论坛中,有一个关于“标签与空间”的精彩讨论。Enjoy;)

#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