这是问题:
在我正在从事的项目中,禁止使用任何制表符,我们只被告知使用空格。
然而,有时,我最终会编辑包含用于缩进和代码对齐的制表符的旧源文件。
使用制表符的代码示例(制表符显示为“|>>>”):
|>>>int a =||>>>|>>>0;
|>>>int foobar =|>>>10;
|>>>int toto =|>|>>>4;
这是一个示例,但您必须考虑到整个文件都充满了它,以至于无法手动更正。
我通常会像这样进行简单的搜索替换来替换带有空格的制表:
:%s/\t/ /g
但代码最终是这样的:
int a = 0;
int foobar = 10;
int toto = 4;
所有的值都未对齐。
我想要的是一个可以删除无用空间但不能删除缩进的命令,以获得如下内容:
int a = 0;
int foobar = 10;
int toto = 4;
即每组 2+ 个空格必须减少到只有 1 个空格,缩进除外。
最佳答案
套装expandtab
所以 vim 确实使用空格而不是制表符,然后使用 :retab!
功能。 (见 :h expandtab
和 :h retab!
)。
这使布局保持原样(应该如此)。变量赋值的对齐是一种风格问题,在这里使用 linter 可能会有所帮助。否则,您的答案非常适合删除中间的空格。
关于vim:如何删除行中间的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52734415/