vim 一次选择/编辑多个非连续行

2024-03-26

我有一个带有字符串的文件:

 8 deb http://ftp.de.debian.org/debian/ stable main contrib non-free
 9 deb http://ftp.de.debian.org/debian/ stable main contrib non-free
10 deb http://ftp.de.debian.org/debian/ testing main contrib non-free
11 deb http://ftp.de.debian.org/debian/ testing main contrib non-free
12 deb http://ftp.de.debian.org/debian/ sid main contrib non-free
13 deb http://ftp.de.debian.org/debian/ sid main contrib non-free
14 deb http://ftp.de.debian.org/debian/ experimental main contrib non-free
15 deb http://ftp.de.debian.org/debian/ experimental main contrib non-free

我只需要在第 9,11,13,15 行编辑地址。 我只是好奇,vim 中是否有任何简单的技巧(例如仅选择此行并在选定范围内替换)来做到这一点? 或者我应该记录一个宏并将其应用于我需要的字符串。


如果可以通过正则表达式选择这些行,我们可以这样做

:g/pattern/s/foo/bar/

如果不可能,则需要编写一个小函数。功能并不复杂,只是getline(在给定列表中使用 lineNO ),然后进行替换,最后setline后退。但我不知道这是否属于你的“简单黑客”。

通过函数,你还可以这样做:

do substitution on lines with  10 <line number <50 and line number is odd.

这样您就不必输入这些数字。

您可能会意识到,shell 命令更容易处理此类事情。您可以选择调用外部命令来处理 vim 中的文本。

例如:

%!awk 'NR==3||NR==5{gsub(/deb/,"foo")}1'

或者用上面的例子进行替换,奇数行号在:10-50之间

%!awk 'BEGIN{for(i=11;i<50;i+=2)l[i]}NR in l{gsub(/foo/,"bar")}1'

您还可以直观地选择文本并将它们传递给外部命令。

希望能帮助到你。

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

vim 一次选择/编辑多个非连续行 的相关文章

随机推荐

  • 从 JSON 对象中删除键值对

    我下面有这个 JSON 对象 XXX 2 YYY 3 ZZZ 4 XXX 5 YYY 6 ZZZ 7 XXX 1 YYY 2 ZZZ 3 我想从 json 对象中删除 YYY 键值 以便新的 json 对象如下所示 XXX 2 ZZZ 4
  • 如何解决违反迪米特法则的问题?

    我和一位同事为我们的客户设计了一个系统 我们认为我们创建了一个漂亮简洁的设计 但我对我们引入的一些耦合遇到了问题 我可以尝试创建一个示例设计 其中包含与我们的设计相同的问题 但如果您原谅我 我将创建我们设计的摘录来支持该问题 我们正在开发一
  • 如何在 React 中触发函数之前等待 setState 完成?

    这是我的情况 在 this handleFormSubmit 上我正在执行 this setState 在 this handleFormSubmit 内部 我调用 this findRoutes 这取决于 this setState 的成
  • 找不到使用 System.Web.UI.HtmlControls 命名空间

    我尝试了各种使用方法System Web UI HtmlControls 但我没有找到任何参考 我如何使用该命名空间 转到项目的参考文献并确保 System Web 位于其中 如果没有 右键单击 添加引用 NET 然后添加 System W
  • Sublime Text 2 插件可按字母顺序对函数进行排序

    我正在我的应用程序中构建许多函数 现在我想按字母顺序排列它们 Sublime Text 2 中是否有任何函数可以自动执行此操作 应该改变这些 public function login 1 public function about pub
  • Jersey 2:过滤器和@Context注入

    我有以下问题 ContainerRequestFilter 是一个单例 但是阅读以下内容 Jaxrs 2 0 Oracle 规范 http download oracle com otn pub jcp jaxrs 2 0 fr eval
  • 使用 XDocument 加载编码为 UTF 16 的 xml

    我正在尝试使用 XDocument 方法读取 xml 文档 但当 xml 有时我收到错误 当我手动删除编码时 它工作得很好 我收到错误 没有 Unicode 字节顺序标记 无法切换到 Unicode 我尝试搜索并找到了这里 gt 为什么包含
  • 更新ImageField时如何删除旧图像?

    我正在使用 Django 创建一个库存照片网站 我的模型中有一个 ImageField 问题是当用户更新图像字段时 原始图像文件不会从硬盘中删除 更新后如何删除旧图像 Use Django 清理 https github com un1t
  • AF_UNIX 相当于 Windows [重复]

    这个问题在这里已经有答案了 我想知道如何在 Windows 上使用类似于 Unix Domain Socket 的功能 行为是 一个进程将成为 服务器 并接收来自其他进程的连接 并且它可以保留和使用来自不同进程的连接 就像 TCP 套接字一
  • Intellij - 如何制作一个可以通过 CLI 或 Web 服务执行 IDE 操作的插件?

    我需要一些帮助来开始制作特定的 IntelliJ 插件 我想制作一个 IntelliJ 插件 这样您就可以从 CLI 或者从 Web 服务 如果更容易的话 启动 IntelliJ 操作 例如 我已经用 gradle 脚本构建了我的项目 但我
  • 顶点缓冲区对象(删除过程)opengl

    我什么时候应该调用 glDeleteBuffersARB 我应该在申请结束后做吗 我可以以某种方式自动化删除顶点缓冲区对象的过程吗 例如 smart ptr 之类的东西 绝不 你永远不应该打电话glDeleteBuffersARB 十多年来
  • 在 .NET 中使用 FB Connect / Google OAuth 登录

    我希望允许我的用户使用我的登录系统 FB Connect 或 Google Login 登录我的网站 我不想仅使用大型库 如 dotnetOpenAuth 来实现这两个选项 那么我应该如何实现这一点 其他问题 我应该如何将 FB Googl
  • ALLOWED_HOSTS 和 Django

    我尝试在生产服务器上启动 Django 1 11 项目 当我启动应用程序时 我看到以下错误 无效的 HTTP HOST 标头 bla bla bla bla bla vla com 您可能需要将 u bla bla bla bla bla
  • 如何根据 iPhone 中的文本大小动态增加按钮宽度?

    我以编程方式创建了 10 个按钮 并在按钮中设置了标题 现在我想动态增加按钮框架大小 它取决于文本 我给出了一些条件并设置了框架大小 但我如何设置确切的帧大小取决于文本 动态获取文本 我的示例代码是 float x 0 y 0 w h 20
  • 在其间至少有 X 间隙长度的区域中生成点

    我试图想出一种在给定区域 在我的例子中是一个正方形 中生成 X 个随机点的方法 造成这个问题的一件事是每个点必须距离所有其他点至少 Y 个单位 首先想到的是 在 c 中 检查新点与所有现有点之间的距离 while points Count
  • 使用虚函数而不是IF语句更快?

    我记得在网上读到过 在极低延迟的情况下 最好使用虚拟函数来代替 IF 语句 这是真的 他们基本上是说动态多态性对于速度情况更好吗 是否有用户可以分享其他 C 低延迟 怪癖 我非常怀疑单个 if else 语句会比使用虚拟函数慢 虚拟函数通常
  • Google Geocode API 经度和纬度不适用于 zip 96101

    I am using google geocode api https developers google com maps documentation geocoding intro https developers google com
  • 具有异步等待任务组的最大线程数

    我的目的是了解 Swift 5 5 使用的 协作线程池 async await 以及任务组如何自动约束并发程度 考虑以下任务组代码 并行执行 32 个计算 func launchTasks async await withTaskGroup
  • 如何使用 Xdocument 将 xml 元素值转换为字符串

    我将 xml 存储在字符串中 并使用 Xdocument 将字符串解析为 xml 从中我需要获取 xml 元素值 并使用该值将其插入到数据库中 任何帮助 将不胜感激 XML
  • vim 一次选择/编辑多个非连续行

    我有一个带有字符串的文件 8 deb http ftp de debian org debian stable main contrib non free 9 deb http ftp de debian org debian stable