任何人都知道在vi中是否有可能只用注释replace未注释/非空白行?
如果我想用一些我知道可以使用的东西replace一个注释行:%s / ^#/ ## foo ## / g – 但我正在寻找与此相反的东西。
示例文件:
# Some user's cron # Test comments 00 00 * * * ~/somescript.sh
预期结果:
# Some user's cron # Test comments ##DISABLE##00 00 * * * ~/somescript.sh
:g/^[0-9\*]/s/^/##DISABLED##/
这个“g / RE /”部分select以数字或*字符开头的所有行。 然后,“s / RE / replacement /”在所有选定的行上完成工作。
:%s/^\([^#]\)/##DISABLE##\1/
sed -i -e 's/^\([^#]\)/#\1/g' /etc/cronfile
:%s/^\([#\n]\)\@!/##DISABLE##/g
^([#\ n])\ @! 意思是“不在行首或换行”
在vim 7.2中为我工作
也许是这样的:
%s/^\([^#]\)\|!\($\)/##FOO##\1/g
我知道它与所有这些转义乱七八糟,但第一部分线不以# [^#] ,或者(逃逸pipe道\| )非空行( ^$ )
:map q /^[^#]<Enter>0i##DISABLE##<Esc>q 1Gq
这在vim中有效,但不在股票vi中,它不会对映射进行尾recursion。
如果您使用的是Vim,您可能会对EnhCommentify.vim插件感兴趣,它可以让您轻松切换注释。