正则表达式用于删除Gvim中#之后的所有行文本

时间:2017-05-21 17:25:29

标签: regex vim

我必须在发生'#'后删除一行中的所有文字。 (在R语言中的注释)在Gvim的以下文本中:

This line should stay.

  # one (after initial spaces)   - delete this line
    #two (after initial tab) - delete this line
# three (no initial space)       - delete this line
one two #three (after initial words)  - delete text after hash.

This line should also stay. 

我试过以下但这些都不起作用:

:%s/#.$//g
:%s/\v#.$//g
:%s/\#.$//g
:%s/\v\#.$//g

我认为'。'表示除换行之外的任何内容问题出在哪里?如何纠正?谢谢。

2 个答案:

答案 0 :(得分:1)

分两步完成。

  1. 首先找到只有评论的行并删除它们。

    :g/^ *#.*$/d

  2. 在行内查找注释并将其删除。

    :%s/#.*/

答案 1 :(得分:1)

:%s/^\s*#.*\n\|#.*//
  • ^\s*#.*\n如果在行首和评论字符处有可选的空格,则完全删除行
  • \|#.*其他,从评论字符删除到行尾