Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
清除vim中的空白,保留缩进_Vim - Fatal编程技术网

清除vim中的空白,保留缩进

清除vim中的空白,保留缩进,vim,Vim,我希望删除vim中的所有空白,但保留默认缩进。当前所有输出文件都使用空格而不是制表符,因此: content content inside[Sneeky white space of epicness] content 应该是: content content inside content 注意:[Sneeky-white-space of-epicness]表示一块空白。使用 $表示行尾。 *表示匹配上一个元素的零个或多个实例(如建议的) 请注意,您可能有标签。。。要表示任

我希望删除vim中的所有空白,但保留默认缩进。当前所有输出文件都使用空格而不是制表符,因此:

content
    content inside[Sneeky white space of epicness]
content
应该是:

content
    content inside
content
注意:
[Sneeky-white-space of-epicness]
表示一块空白。

使用

$
表示行尾。
*
表示匹配上一个元素的零个或多个实例(如建议的)

请注意,您可能有标签。。。要表示任何空白,请使用
\s

%s/\s*$//g

编辑:

根据建议,您可以使用
+
而不是
*
。使用
*
,vim在每一行上进行更换。对于
+
,只有在这种情况下需要进行替换时才进行替换

+
表示至少匹配上一个元素的一个实例。
使用
vim
时,您必须退出
+

有关更多详细信息,请参阅
:帮助模式概述

我最后的答案是:

%s/\s\+$//g

有几个插件可以检测和(按需,甚至自动)删除尾随空格。My就是其中之一,它处理的情况比简单的
:%s
命令通常给出的要多。(插件页面有指向其他插件的链接。)

或者更好的解释是,
*
意味着匹配零个或多个上一个…的实例,对,但您不想用零空白代替零空白。这会影响到每一行。您想要
\s*
\s\+
。我同意kojiro的观点,我会将
*
替换为
+
,这意味着至少匹配一个或多个上一个实例。@LucM我的意思是
\s*$
匹配一行末尾的零个或多个空格<代码>“foo”以零空格结尾,因此这将匹配,替换表达式将发生,用空字符串替换行末尾的零空格。行将保持不变,但这是一个代价高昂的操作。@LucM您在最终答案中遗漏了一个
$
字符串结尾,如果没有它,这是非常错误的:)缩进意味着任何文本前的空白,因此这将使您的示例变成
contentinside
。我猜你指的是尾随空格。
%s/\s\+$//g