Regex 如何读取此命令以删除行尾的所有空格
我碰巧看到了这一页,里面有很多非常有用而且相当神秘的vim技巧。我已经尝试了其中的一些,我了解正在发生的事情,能够在我的头脑中正确地解析它,以便以后可以重新创建它。不过,下面两个命令很难让我的头脑清醒过来,它们可以删除每行末尾的所有空格Regex 如何读取此命令以删除行尾的所有空格,regex,vim,Regex,Vim,我碰巧看到了这一页,里面有很多非常有用而且相当神秘的vim技巧。我已经尝试了其中的一些,我了解正在发生的事情,能够在我的头脑中正确地解析它,以便以后可以重新创建它。不过,下面两个命令很难让我的头脑清醒过来,它们可以删除每行末尾的所有空格 :%s= *$== : delete end of line blanks :%s= \+$== : Same thing 我将%s解释为文件中每一行的字符串替换,但在这之后,我开始迷失在:
:%s= *$== : delete end of line blanks
:%s= \+$== : Same thing
我将%s
解释为文件中每一行的字符串替换,但在这之后,我开始迷失在:s和regex的一些粗糙变体中。我习惯于看到和使用:s/regex/replacement。但上述情况令人非常困惑
以上这些命令在英语中是什么意思,一步一步?正则表达式分隔符不必是斜杠,也可以是其他字符。如果您的搜索或替换字符串包含斜杠,这将非常方便。在这种情况下,我不知道他们为什么使用等号而不是斜线,但你可以假装等号是斜线:
:%s/ *$//
:%s/ \+$//
这有意义吗?第一个搜索一个空格,后跟零个或多个空格,第二个搜索一个或多个空格。每一个都用$
锚定在行的末尾。然后替换字符串为空,因此空格被删除
事实上,我理解你的困惑。如果查看:help:s
,您必须向下滚动几页才能找到此注释:
*E146*
与围绕模式和替换字符串的'/'
不同,您可以
可以使用任何其他字符,但不能使用字母数字字符、“\”
、“”
或
'''
。如果您想在搜索模式中包含“/”
或
替换字符串。示例:
:s+/+//+
我不知道
vim
语法,但在我看来,这些是sed
样式的替换运算符可以统一替换为任何其他单个字符。在这里它似乎是=
。因此,如果你在心里用/
替换=
,你会得到
:%s/ *$//
:%s/ \+$//
这对你来说应该更有意义。谢谢!这就解释了这一点,而且非常有用。我完全不知道除了/之外,你还可以用什么来界定你的正则表达式替换项。如果可以接受这两个答案,我会的。谢谢!