vim:如何删除行中间的空格

标签 vim

这是问题:
在我正在从事的项目中,禁止使用任何制表符,我们只被告知使用空格。
然而,有时,我最终会编辑包含用于缩进和代码对齐的制表符的旧源文件。

使用制表符的代码示例(制表符显示为“|>>>”):

|>>>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/

相关文章:

vim 和 NERD 树扩展 - 添加文件

Vim 用 * 高亮一个单词而不移动光标

vim - 是否有将光标放在当前单词开头的 Vim 运动命令?

Vim 找不到 Vundle 安装的颜色方案

VIM 删除 X 括号之间

firefox - 将堆栈溢出与 Vim 集成

vim - 是否可以改进在命令行上重复命令的 vim 映射?

sql - dbext 似乎认为 ( 是一个sql语句终止符

vim - 如何使VIM对于不同的文件类型有不同的表现?

vim - 在 ViM 中禁用突出显示匹配的括号 : "let loaded_matchparen = 1" not working