2011-10-13 66 views
4

我一直在使用Vim一段时间,并且我已经意识到每次我这样做时它有多强大。我知道的一件事是,每次使用都会让我对全新的命令有一个全新的学习体验,一旦我了解它们,这些命令总能派上用场。Vim中的正则表达式

我注意到的一件事是,很多用户在正则表达式中回答Vim问题。像这样的事情::s/\(\S\+\)/"\1"/(据说这是一个很棒的正则表达式)。所以我有两个关于这个问题。

  • (a)如果我不使用正则表达式,我没有充分利用Vim的全部功能吗?没有任何命令可以做任何正则表达式会做什么? (b)如果您认为正则表达式值得学习,请指向我阅读从介绍到高级水平的材料。如果有帮助,我主要使用Vim编写TeX文件和Python脚本。

谢谢SO社区,你摇滚。

回答

9

a)在我看来,如果你不使用它,并且你现在工作的方式让你感到高兴,那就留下吧。一旦时间到了,你开始需要的东西正则表达式你会学到它们。在你需要的范围内。大多数人以这种方式使用它们。

很少有人知道他们到了这样的地步,让我们说写自己的语法文件或类似的东西。 b)Vim有自己特殊的正则表达式(one of many),但是除了Vim的帮助之外,我首先向Perl推荐一本入门书籍。例如,Learning Perl。它有一个很好的温和的方法,以便表达式开始有意义(并且您不只是将它们作为一个线程来解决某个特定问题)。开始Perl(免费版!)可以是found here

关于正则表达式的高级书籍是Mastering Regular Expressions,以及该系列的类似书籍。另外,中级和掌握Perl也不错。

+1

这正是我所需要的,非常感谢您阅读该书的链接!如果我需要学习,我现在知道该去哪里看看。 – eqb

2

基本上正则表达式对搜索和替换最有用。许多问题可以通过搜索有问题的文本并用聪明的方式将其替换为期望的文本来解决。这并不总是最好的解决办法,很少是唯一的办法。 正则表达式找到一个模式,所以如果你想要编辑在一堆的地方,有一个类似的模式文本,你可以经常用正则表达式 防爆辨别出来:

/my name is .* 

会发现“我的名字是” “我的名字是乔” 或其他任何与“我的名字是”
.匹配任何字符和*告诉Vim匹配0到以前的符号无穷大(在这种情况下.或任何东西)
开始这可能是正则表达式的最简单形式。对于更高级的用法,请使用Idigas提供的答案

+0

+1初学者的例子。谢谢! – eqb