【问题标题】:Vi editor: Replacing in all lines except the ones that begin with #Vi 编辑器:替换所有行,除了以 # 开头的行
【发布时间】:2014-01-24 04:24:28
【问题描述】:

所以我需要在每一行中编辑一些东西,除了以#开头的那些, 因为他们是cmets。我需要用 + 替换所有标签。

我知道在 Vi 中我可以翻译如下内容:

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

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

【问题讨论】:

  • 你需要改变什么?这会对答案产生很大影响

标签: regex vi


【解决方案1】:

g(全局)ex 命令执行您想要的操作:

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

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

要获得 TAB 字符(上面的 ^I),您需要按 ctrl+V 后跟 制表符

【讨论】:

  • ^I 可以简单地替换为 \t(即,可以复制粘贴命令并工作)。 (+1 =))。
【解决方案2】:

似乎这可以通过宏技巧来实现

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

录制一个宏,该宏将移至不以 # 开头的下一行。用制表符替换该行上的所有空格。然后只需重复该宏数百次(或任何数量足以容纳您的文件)

【讨论】:

  • 好吧,我知道 Vi 中有一个工具可以翻译东西,例如:1,$s/a/A/g 将第 1 行中的 a 替换为 A 到最后,但是我如何添加该部分关于'所有不以#开头的行'?也最好在 1 行中
猜你喜欢
  • 2021-11-12
  • 1970-01-01
  • 2013-09-16
  • 2013-01-21
  • 2015-01-18
  • 2014-11-30
  • 1970-01-01
  • 2011-06-19
  • 2011-04-21
相关资源
最近更新 更多