用空格缩进但仍然在Vim中使用首选的shiftwidth?

时间:2011-07-19 19:50:38

标签: vim indentation

我在使用空格进行缩进时遇到问题。许多项目的编码指南指定代码应使用空格而不是制表符缩进。很公平。但是,当我使用他们的代码时,还有什么方法可以看到并使用我喜欢的移动宽度吗?

例如,这段代码使用8个空格缩进:

function foo() {
        return 'foo';
}

有什么方法,当我在Vim中打开它时,它显示(和缩进,用于编辑),因为它(shiftwidth为4):

function foo() {
    // edited to add this comment
    return 'foo';
}

但是,当我保存它时,它会像这样保存(8个空格缩进):

function foo() {
        // edited to add this comment
        return 'foo';
}

当您使用制表符进行缩进时,这种情况很自然地发生。只需调整shiftwidth即可,您可以根据自己喜欢的缩进进行编辑。但是,现在大多数项目似乎都需要使用空格进行缩进。在我个人喜欢的shiftwidth中编辑文件似乎是不可能的,但在使用空格时仍然符合项目的缩进指南。

1 个答案:

答案 0 :(得分:2)

请参阅retab的vim帮助。它有一个例子来做你要求的。

如果您没有相同的vim帮助文件,我会这样做:

                                                        *retab-example*
Example for using autocommands and ":retab" to edit a file which is stored
with tabstops at 8 but edited with tabstops set at 4.  Warning: white space
inside of strings can change!  Also see 'softtabstop' option. >

  :auto BufReadPost     *.xx    retab! 4
  :auto BufWritePre     *.xx    retab! 8
  :auto BufWritePost    *.xx    retab! 4
  :auto BufNewFile      *.xx    set ts=4