【发布时间】:2014-01-24 04:24:28
【问题描述】:
所以我需要在每一行中编辑一些东西,除了以#开头的那些, 因为他们是cmets。我需要用 + 替换所有标签。
我知道在 Vi 中我可以翻译如下内容:
1,$s/a/A/g ,将所有 a 替换为 A
但是如何添加指定所有不以#开头的行的范围?
【问题讨论】:
-
你需要改变什么?这会对答案产生很大影响
所以我需要在每一行中编辑一些东西,除了以#开头的那些, 因为他们是cmets。我需要用 + 替换所有标签。
我知道在 Vi 中我可以翻译如下内容:
1,$s/a/A/g ,将所有 a 替换为 A
但是如何添加指定所有不以#开头的行的范围?
【问题讨论】:
g(全局)ex 命令执行您想要的操作:
:g!/^#/s/^I/+/g
一般格式为 g [!] / RE/ CMD,其中 RE 是描述要应用命令的所有行的模式,CMD em> 是任何 ex 命令。可选的 ! 反转 RE 的含义,将命令应用于所有不匹配的行。
要获得 TAB 字符(上面的 ^I),您需要按 ctrl+V 后跟 制表符
【讨论】:
^I 可以简单地替换为 \t(即,可以复制粘贴命令并工作)。 (+1 =))。
似乎这可以通过宏技巧来实现
qr/^[^#]<Enter>:s/\t/+<Enter>q
3000@r
录制一个宏,该宏将移至不以 # 开头的下一行。用制表符替换该行上的所有空格。然后只需重复该宏数百次(或任何数量足以容纳您的文件)
【讨论】: