作者:fishdenise_496 | 来源:互联网 | 2022-12-02 16:43
问题出在这里:在我正在进行的项目中,禁止使用标签,我们只被告知要使用空格.但有时,我最终编辑了一个遗留源文件,其中包含缩进和代码对齐的选项卡.
使用选项卡的代码示例(选项卡字符显示为"| >>>"):
|>>>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个空格.
1> Doktor OSwal..:
设置为expandtab
vim确实使用空格而不是制表符,然后使用该:retab!
功能.(见:h expandtab
和:h retab!
).
这样就保持了布局(就像它应该的那样).变量赋值的对齐是一种风格问题,一个linter可能在这里有所帮助.否则你的答案完全可以删除中间的空白.
先生,我不知道这个命令.你改变了我的生活!
2> Vultrao..:
回答问题的命令如下:
:%s/\([^ ]\+ \) \+/\1/g
(请注意之前和之后的空格\)
)
这将搜索所有具有非空白优先级的事件,并将以下一组空格仅替换为一个空格。
但是,这将在具有多个尾随空格的行上留下单个尾随空格。要更正此问题,请使用命令:
:%s/ *$//