在 (n) 个字符后插入一个字符并重复 (n) 次 - vim

2024-04-01

我经常收到我们支持人员在 isc-dhcp 上进行 dhcp 预订的票证。有些打印机(cof、cof HP)在测试页上打印mac地址信息是这样的:002481F33A9C;显然,支持人员会以这种方式写入票证。我想更改为 00:24:81:F3:3A:9C 布局并使用有效的方法来执行“插入:在 2 个字符后 4 次”。

我知道我可以通过宏来实现这一点:

qq     " start recording -> register q
ll     " move the cursor 2 characters right
i      " enter insert mode
:      " insert :
<Esc>  " switch to normal mode and cursor goes 1 character back
l      " move the cursor 1 character right(since insert mode back one character)
q      " stop recording
4@q    " execute macro 4 times

然后是这个:

host foo {
    hardware ethernet 002481F33A9C;
    fixed-address 192.x.x.x;
}

将变成这样:

host foo {
    hardware ethernet 00:24:81:F3:3A:9C;
    fixed-address 192.x.x.x;
}

有没有一种方法可以通过命令行模式更快地实现此目的,并且无需录制宏,因为我们有很多办公室,并且将带有此宏的 vimrc 传递到所有机器(和冗余机器)可能会很痛苦?

Cheers


一个可能的解决方案:

:%s/\v(hardware ethernet) (..)(..)(..)(..)(..)(..);$/\1 \2:\3:\4:\5:\6\:\7;/g

解释:

  • 打开“非常神奇”模式

  • 匹配字符串hardware ethernet后跟 12 个字符,然后是分号和行尾

  • 将12个字符分成6个子表达式,每个子表达式由2个字符组成

  • 替换字符串,在每个子表达式之间插入冒号

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 (n) 个字符后插入一个字符并重复 (n) 次 - vim 的相关文章

随机推荐

  • 使用 Parse 创建 Stripe 客户

    我正在尝试使用解析创建一个条带客户 但似乎无法从响应中获取 customer id 值 var newCustomer Stripe Customers create card request params cardToken email
  • Objective-c:访问方法中的可变参数[重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Objective C 中创建可变参数方法 https stackoverflow com questions 4804674 how to create variable argument
  • 紧凑的等于和哈希码

    我有一个有 4 个属性的 bean user institutionId groupId postingDate 我使用 Eclipse 生成 equals 和 hashcode 但生成的代码不太漂亮 有没有一种紧凑的方法可以做到同样的事情
  • 将ELF文件加载到内存中

    我正在尝试将 elf 文件放入内存然后执行它 步骤如下 1 要放入内存的文件 int main printf Hello world n return 0 2 编译它gcc o hello hello c static ELF Header
  • 如何锁定 Django 中的关键部分?

    我找不到一个好的干净方法来锁定 Django 中的关键部分 我可以使用锁或信号量 但 python 实现仅适用于线程 因此如果生产服务器分叉 那么这些将不会受到尊重 有谁知道一种方法 我现在正在考虑 posix 信号量 来保证跨进程的锁定
  • Docker Weave 和 WeaveDNS 问题

    我在本地计算机上运行的小型 weave 网络上设置 weaveDNS 时遇到问题 目前 问题表现为以下事实 当我运行 weave status 时 我在输出中没有看到 DNS 部分 如故障排除部分中所建议的那样 http docs weav
  • 如何正确使用倒计时线程,如何提前停止它?

    线程没有按我期望的方式工作 我有一个可行的解决方案 可以使用 Raspberry Pi 和簧片开关监控冰箱何时打开和关闭 声音播放未暂停和暂停 我现在想添加一个计时器 以便在门打开时间过长时执行某些操作 我认为启动一个在警报操作之前休眠 x
  • 排列 R 中向量的所有唯一枚举

    我试图找到一个函数来排列所有unique向量的排列 而不计算相同元素类型子集中的并置 例如 dat lt c 1 0 3 4 1 0 0 3 0 4 has factorial 10 gt 3628800 可能的排列 但仅10 2 2 4
  • R 中的“=”和“<-”有什么区别? [复制]

    这个问题在这里已经有答案了 我正在使用 R 2 8 1 并且可以同时使用 and lt 作为变量赋值运算符 他们之间有什么区别 我应该使用哪一个 From here http stat ethz ch R manual R patched
  • html 仅选择一组中的一个复选框

    那么如何才能只允许用户选择一个复选框呢 我知道单选按钮是 理想的 但就我的目的而言 它不是 我有一个字段 用户需要选择两个选项之一 但不能同时选择两个选项 问题是我需要我的用户也能够取消选择他们的选项 这就是单选按钮失败的地方 因为一旦选择
  • 使用.NET删除矩形?

    我可以删除我绘制的旧矩形并绘制新矩形吗 private void panel1 MouseClick object sender MouseEventArgs e Graphics g this panel1 CreateGraphics
  • 使用 Visual Studio 2008 远程调试 Web 应用程序的服务器端

    因此 我读到在我的测试服务器计算机上安装 VS2008 不是一个好主意 因为它对运行时环境的改变太大 我以前从未尝试过使用 Visual Studio 进行远程调试 那么对服务器端 Web 应用程序代码进行逐行远程调试的 最佳 方法是什么
  • Turbolinks 不工作 - 而是加载页面两次

    所以 在我的 Rails 4 应用程序中 我有 Turbolinks gem require jquery js require jquery turbolinks require turbolinks 然而 似乎有些不对劲 Turboli
  • 为什么我必须显式链接 libm? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么必须链接C 中的数学库 https stackoverflow com questions 1033898 why do you have to link the math library in
  • java进程停止整个进程树

    我正在使用 Java 运行时运行命令 包括某些 CVS 命令 I use process runtime exec cmd C cvs 在 Java 中运行 Process 的格式我需要有停止它的选择 为此 我使用 Java Process
  • 如何在模板中使用 request.META.get('HTTP_REFERER') ?

    我想用request META get HTTP REFERER 在模板内 我的模板来源 extends base html block title django bookmark login endblock block head log
  • 如何将 Google Apps 脚本 blob 转换为 base64 编码的字符串?

    我在 Google Apps 脚本中有一个 blob 如何将其转换为 Base64 编码的字符串以便将其写入其他 API FileReader 似乎不起作用 你可以试试这个 Utilities base64Encode blob getBy
  • 以编程方式执行 Segue 并将参数传递到目标视图

    在我的应用程序中 我有一个以编程方式执行转场的按钮 void myButtonMethod execute segue programmatically self performSegueWithIdentifier MySegue sen
  • 检查选项是否相等的便捷方法

    我正在寻找一种更方便的方法来证明可选值的相等性 这就是一个Oracle 博客文章 http www oracle com technetwork articles java java8 optional 2175753 html建议 Opt
  • 在 (n) 个字符后插入一个字符并重复 (n) 次 - vim

    我经常收到我们支持人员在 isc dhcp 上进行 dhcp 预订的票证 有些打印机 cof cof HP 在测试页上打印mac地址信息是这样的 002481F33A9C 显然 支持人员会以这种方式写入票证 我想更改为 00 24 81 F