int main () {
int a = 1;
}
更改为
#int main() {
#int a = 1;
#}
如何在每行之前插入"#"?
如果您只想在每行开头的(可能为空的(空格后面放置一个注释标记,则可以使用捕获组按照以下脚本获取它:
printf "int main () {n int a = 1;n}n" | sed 's/^(s*)/1#/'
#int main () {
#int a = 1;
#}
更详细地说:
a ccc dd <- markers, see below.
s/^(s*)/1#/
bb bb e <- markers, see below.
标记
a
(^
字符(是起始行锚点,这意味着它只会在每行的开头操作。标记
b
((...)
集(是一个捕获组,这意味着此模式捕获的任何文本都将被存储以供以后使用。标记
c
,即s*
将匹配零个或多个空格字符。它位于捕获组内的事实意味着它将被存储。标记
d
是前面1
指定的第一个捕获组。这将简单地将捕获的内容插入到替换字符串中。用于捕获组的数字可能很复杂,尤其是在层次结构中捕获时。但是,由于您在这里只捕获一件事,因此它相当简单。标记
e
只是要添加到捕获文本末尾的#
。
底线是它在每行的开头找到最大的空白部分,并将#
字符附加到其中。
正如赛勒斯在评论中指出的那样,您还可以使用:
sed 's/[^ t]/#&/'
这将在每行的第一个非空格非制表符之前插入#
。
这应该为您完成:
:%s/(^.*$)/#1/g
我的尝试:
:%norm! _i#
% ......... hole file
nomrm! .... normal mode
_ ......... first non-blank of the line
i# ........ insert comment
一种使用块编辑的可能的 vim 方法
ggctrl-vGI#esc
从gg
开始,然后是ctrl+v,然后是GI
。现在按下要插入的字符,#
并用esc完成它
In vim: 首先通过按 Esc 键确保您未处于插入模式。 然后按冒号键并输入:
1,3s/^[ \t]*/&#/
这表示从第 1 行到第 3 行,在行的开头之后和一些可能的 空格和/或制表符,重复这些可能的空格和/或制表符并附加哈希 象征。