有人知道在 vi 中是否可以用注释替换未注释/非空行吗?
如果我想用我知道的内容替换注释行,我可以使用:%s/^#/##foo##/g——但我正在寻找与此相反的内容。
示例文件:
# Some user's cron
# Test comments
00 00 * * * ~/somescript.sh
预期结果:
# Some user's cron
# Test comments
##DISABLE##00 00 * * * ~/somescript.sh
答案1
:g/^[0-9\*]/s/^/##DISABLED##/
“g/RE/”部分会选择所有以数字或 * 字符开头的行。然后“s/RE/replacement/”会对所有选定的行进行操作。
答案2
:%s/^\([^#]\)/##DISABLE##\1/
答案3
sed -i -e 's/^\([^#]\)/#\1/g' /etc/cronfile
答案4
也许是这样的:
%s/^\([^#]\)\|!\($\)/##FOO##\1/g
我知道所有这些转义都很乱,但是第一部分该行不是以 # 开头[^#]
,或者(转义的管道\|
)不是空的行(^$
)