我现在已经使用Vim了一段时间,而且我逐渐意识到每次这样做都有多么强大。我知道的一件事是,每次使用都会让我获得关于新命令的全新学习经验,一旦我了解它们,它们似乎总是派上用场。
我注意到有一件事是很多用户在regexp中回答Vim问题。像这样的事情::s/\(\S\+\)/"\1"/
(据说这是一个很棒的正则表达式)。所以我对此有两个问题。
(a)如果我不使用正则表达式,我是不是在利用Vim的全部功能?是不是有命令可以做任何regexp会做什么?
(b)如果您认为regexp值得学习,请指导我阅读从介绍到高级的材料。如果它有帮助,我主要使用Vim来编写TeX文件和Python脚本。
感谢SO社区,你摇滚。
答案 0 :(得分:9)
a)在我看来,如果你没有使用它并且你对现在的工作方式感到高兴,那么就把它留在那里。一旦时间到了,你开始需要某些东西的正则表达式,你将学习它们。在您需要的范围内。大多数人都是这样使用它们。
很少有人知道他们,他们说要写自己的语法文件或类似的东西。
b)Vim有自己独特的正则表达式(one of many),但首先,除了Vim的帮助之外,我还推荐了一本Perl的入门书籍。例如,Learning Perl。它有一个很好的温和的方法,因此表达式开始有意义(并且你不只是将它们学习为一个特定问题的衬垫)。 Beginning Perl(免费版!)可以是found here。
有关正则表达式的高级书籍Mastering Regular Expressions,以及该系列的类似内容。此外,Intermediate和Mastering Perl也不错。
答案 1 :(得分:2)
基本上,正则表达式对搜索和替换最有用。通过搜索有问题的文本并用所需文本巧妙地替换它,可以解决许多问题。这并不总是最好的解决方法,很少是唯一的方法。 正则表达式找到一个模式,所以如果你想在一堆具有类似模式的地方编辑文本,你通常可以用正则表达式来识别它们 例如:
/my name is .*
会发现“我的名字是”
“我的名字是乔”
或以“我的名字”开头的任何其他内容
.
匹配任何字符,*
告诉vim匹配前一个符号的0到无穷大(在这种情况下为.
或任何其他内容)
这可能是最简单的正则表达式。如需更高级的使用,请使用Idigas提供的答案