我需要编辑除了以#开头的行之外的每一行,因为它们是注释。我需要用+替换所有制表符。
我知道在Vi中可以像这样翻译内容:
1,$s/a/A/g,将所有a替换为A
但是如何添加范围,指定所有不以#开头的行?
g
(全局)ex 命令可以实现你想要的功能:
:g!/^#/s/^I/+/g
通用格式为g[!]/RE/CMD,其中RE是描述应用命令的所有行的模式,而CMD是任何ex命令。可选的!将RE的含义反转,将命令应用于所有不匹配的行。
要在行上获得字符(上面的^I
),您需要按ctrl+V,然后是TAB
看起来可以通过宏技巧实现
qr/^[^#]<Enter>:s/\t/+<Enter>q
3000@r
记录一个宏,该宏将移动到下一行,该行不以#开头。将该行中的所有空格替换为制表符。然后只需重复该宏数百次(或文件所需的任何大量数量)