int main () {
int a = 1;
}
更改为
#int main() {
#int a = 1;
#}
如何在每行之前插入“#”?
答案 0 :(得分: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
就是您要添加到捕获的文本末尾的#
。
最重要的是,它在每行的开头找到了最大的空白部分,并在其后附加了#
字符。
Cyrus在评论中指出,您还可以使用:
sed 's/[^ \t]/#&/'
它将在每行的第一个非空格-非制表符之前插入#
。
答案 1 :(得分:0)
这应该为您做到:
:%s/\(^.*$\)/#\1/g
答案 2 :(得分:0)
我的尝试
:%norm! _i#
% ......... hole file
nomrm! .... normal mode
_ ......... first non-blank of the line
i# ........ insert comment
答案 3 :(得分:0)
可能使用块编辑的vim方法
ggctrl-vGI#esc
以gg
开头,然后是 ctrl + v ,然后是GI
。现在按下您要插入的字符#
并用 esc
答案 4 :(得分:0)
在vim中: 首先,请按退出键以确保您未处于插入模式。 然后按冒号键并输入:
1,3s / ^ [\ t] * /&#/
这表示从第1行到第3行,在该行的开头之后,并且可能 空格和/或制表符,重复那些可能的空格和/或制表符并附加哈希 符号。