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