【问题标题】:Regular Expressions in VimVim 中的正则表达式
【发布时间】:2012-01-22 01:05:51
【问题描述】:

我已经使用 Vim 有一段时间了,每次使用时我都意识到它的强大。我知道的一件事是,每次使用都会让我获得全新的学习体验,了解新命令似乎总是能派上用场。

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

  • (a) 如果我不使用正则表达式,我是否没有充分利用 Vim 的强大功能?难道没有命令可以做任何正则表达式都会做的事情吗?

  • (b) 如果您认为正则表达式值得学习,请指点我阅读从入门到高级的材料。如果有帮助,我主要使用 Vim 来编写 TeX 文件和 Python 脚本。

感谢 SO 社区,你真棒。

【问题讨论】:

    标签: regex vim


    【解决方案1】:

    a) 在我看来,如果您不使用它并且您对自己现在的工作方式感到满意,那么就这样吧。一旦时机成熟,您开始需要 something 的正则表达式,您就会学习它们。到你需要的程度。大多数人就是这样使用它们的。

    很少有人知道它们,比方说去编写自己的语法文件或类似的东西。

    b) Vim 有自己独特的正则表达式风格(one of many),但首先,除了 Vim 的帮助,我推荐一本 Perl 入门书籍。例如,Learning Perl。它有一个很好的温和方法,因此表达式开始变得有意义(而且你不只是将它们作为手头特定问题的一个衬里来学习)。 Perl 入门(免费版!)可以是found here

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

    【讨论】:

    • 这正是我所需要的,非常感谢您提供该书的链接!如果我需要学习它们,我现在知道去哪里找了。
    【解决方案2】:

    基本上正则表达式对于搜索和替换最有用。通过搜索有问题的文本并以巧妙的方式将其替换为所需的文本,可以解决许多问题。这并不总是最好的解决方法,也很少是唯一的方法。 正则表达式会找到一个模式,因此如果您想在一堆具有相似模式的地方编辑文本,您通常可以使用正则表达式来识别它们 例如:

    /my name is .*
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2011-03-02
      • 2014-07-23
      相关资源
      最近更新 更多