0

假设我有一堆线

    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/>";

什么是正确的reg ex?

4

7 回答 7

2

有很多方法。这是一个:

:'<,'>s/^\s*/\0#
于 2012-10-26T21:20:27.093 回答
2

另一个:

  1. 直观地选择所有行V<motion>

  2. 用于在每一行:normal执行正常:'<,'>norm I#模式命令, .

范围是自动添加的,所以完整的序列是V4j:norm I#.

于 2012-10-27T05:46:01.870 回答
1

您应该能够使用以下内容:

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

此正则表达式匹配行首的任何制表符或空格,然后替换为整个匹配 ( &) 后跟#.

于 2012-10-26T21:19:15.077 回答
1

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

于 2012-10-26T21:20:19.883 回答
1

另一个:

  1. 用 启动宏qx

  2. 在该行的第一个可打印字符之前插入一个 octothorpe,返回正常模式并向下一行I#<Esc>j

  3. 停止录制q

  4. 使用执行宏x时间5@x

于 2012-10-27T05:50:51.247 回答
1

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

于 2012-10-27T09:04:11.683 回答
0

你可以这样做:

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

这会将所有空间和制表符转换为变量并在符号\1之前恢复它们#

于 2012-10-26T21:20:10.620 回答