Vi编辑器:替换除以#开头的所有行

3

我需要编辑除了以#开头的行之外的每一行,因为它们是注释。我需要用+替换所有制表符。

我知道在Vi中可以像这样翻译内容:

1,$s/a/A/g,将所有a替换为A

但是如何添加范围,指定所有不以#开头的行?


你需要改变什么?这将会对答案产生相当大的影响。 - Joel
2个回答

4

g(全局)ex 命令可以实现你想要的功能:

:g!/^#/s/^I/+/g

通用格式为g[!]/RE/CMD,其中RE是描述应用命令的所有行的模式,而CMD是任何ex命令。可选的!将RE的含义反转,将命令应用于所有不匹配的行。

要在行上获得字符(上面的^I),您需要按ctrl+V,然后是TAB


1
“^I” 可以被简单地替换为 “\t”(这样命令就可以复制粘贴并且正常工作)。(+1 =))。 - AD7six

0

看起来可以通过宏技巧实现

qr/^[^#]<Enter>:s/\t/+<Enter>q
3000@r

记录一个宏,该宏将移动到下一行,该行不以#开头。将该行中的所有空格替换为制表符。然后只需重复该宏数百次(或文件所需的任何大量数量)


我知道Vi中有一个工具可以翻译内容,例如:1,$s/a/A/g 可以将从第一行到最后一行中的a替换为A,但如何添加“所有不以#开头的行”的部分呢?最好还是在一行中完成。 - user3166289

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接