如何用替换和替换在vim中注释几行

时间:2012-10-26 21:16:56

标签: regex vim

假设我有很多行

    echo "<br/>";
    echo "<pre>";
    error_log("whatever");
    echo "</pre>";
    echo "<br/>";

我要评论它们,我可以运行这个命令

  

S / ^ /#

但它将#符号放在行的开头而不是在第一个单词的前面,所以它看起来像下面的行

#    echo "<br/>";
#    echo "<pre>";
#    error_log("whatever");
#    echo "</pre>";
#    echo "<br/>";

如何让它看起来更像下面的代码

    #echo "<br/>";
    #echo "<pre>";
    #error_log("whatever");
    #echo "</pre>";
    #echo "<br/>";

适当的注册表是什么?

7 个答案:

答案 0 :(得分:2)

有很多方法。这是一个:

:'<,'>s/^\s*/\0#

答案 1 :(得分:2)

另一个:

  1. V<motion>

  2. 直观地选择所有行
  3. 使用:normal在每一行:'<,'>norm I#执行普通模式命令。

  4. 自动添加范围,因此完整序列为V4j:norm I#

答案 2 :(得分:1)

您应该可以使用以下内容:

s/^[ \t]*/&#/

此正则表达式匹配行开头的所有制表符或空格,然后替换为整个匹配项(&),后跟#

答案 3 :(得分:1)

我做的一件事就是转到行的开头(^),点击Ctrl+v,然后键入行号,然后键入gg,然后执行Shift-I },键入#并按ESC。我确信有更好的方法,但它似乎对我有用:)

答案 4 :(得分:1)

另一个:

  1. 使用qx启动宏。

  2. 在该行的第一个可打印字符前插入一个octothorpe,返回普通模式并使用I#<Esc>j

  3. 向下一行
  4. 使用q停止录制。

  5. 使用x执行宏5@x次。

答案 5 :(得分:1)

对于评论进出,我会依赖插件;许多都是可配置的,并为多种编程语言提供多种注释样式,所有这些都具有短映射。两个流行的是NERD_CommentertComment

答案 6 :(得分:0)

你可以这样做:

s/^\([\s\t]*\)/\1#/

这会将所有空格和标签变为\1变量并在#符号

之前恢复它们