如何用 VI/VIM 编辑器中每次出现的不同单词替换查找单词?

2023-11-30

例如,我有一个文本, 10 3 4 2 10 , 4 ,10 ....

不,我想用不同的单词更改每 10 个

我知道 %s/10/replace-words/gc 但它只让我像 yes/no 一样进行交互式替换,但我想用不同的单词来更改 10 的每次出现,例如 Replace1, 3, 4 , 2 , Replace2, 4, Replace3 。 ...


替换每个出现的10 with replace{index_of_match}:

:let @a=1 | %s/10/\='replace'.(@a+setreg('a',@a+1))/g

替换每个出现的10使用预定义数组中的单词:

:let b = ['foo', 'bar', 'vim'] | %s/10/\=(remove(b, 0))/g

替换每个出现的10使用预定义数组中的单词以及匹配的索引:

:let @a=1 | let b = ['foo', 'bar', 'vim'] | %s/10/\=(b[@a-1]).(@a+setreg('a',@a+1))/g

但由于无论如何您都必须输入任何单词,因此第二个和第三个功能的好处微乎其微。有关“手动”解决方案,请参阅 SpoonMeiser 的答案。

更新:如所愿,第二个示例中正则表达式部分的解释:

%= 文档中的每一行
s/<search>/<replace>/g = s意味着进行搜索和替换,g表示替换所有出现的情况。
\=将以下内容解释为代码。
remove(b, 0)删除列表索引 0 处的元素b并返回它。

所以对于第一次出现。该线将是%s/10/foo/g第二次,现在只剩下名单了['bar', 'vim']所以这条线将是%s/10/bar/g等等

注意:这是一个快速草稿,不太可能是实现它的最佳和最干净的方法,如果有人想改进它,请随时添加评论

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

如何用 VI/VIM 编辑器中每次出现的不同单词替换查找单词? 的相关文章

  • Linux 内核使用的设备树文件 (dtb) 可视化工具? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以图形化表示Linux内核中使用的硬件设备树的工具 我正在尝试了解特定 Arm 芯片组
  • 使用脚本检查 git 分支是否领先于另一个分支

    I have branch1 and branch2我想要某种 git branch1 isahead branch2 这将显示如果branch1已承诺branch2没有 也可能指定这些提交 我无法检查差异原因branch2 is在之前br
  • Vagrant 遇到问题 - “404 - 未找到”

    我正在尝试使用 Vagrant 制作一个 LAMP 盒子 有人告诉我它使用起来非常简单 我对网络和虚拟机完全陌生 对 Linux Ubuntu 的经验也很少 我目前已尝试按照官方文档页面上的教程进行操作 http docs vagrantu
  • vim 脚本“input()”函数不需要用户按 Enter 键

    我想让用户调用我的函数 然后让该函数请求用户输入 但我不希望用户在输入 input 函数所需的字母后必须输入 enter 例如 用户应该能够键入 h j k l 等单字母命令 并且键入的每个字母都会在我的函数中循环 直到用户键入 x 退出
  • 使用 ioctl 在 C++ 中以编程方式添加路由

    我编写了简单的 C 函数 添加了新路线 void addRoute int fd socket PF INET SOCK DGRAM IPPROTO IP struct rtentry route memset route 0 sizeof
  • 在ubuntu中打开spyder

    我想在ubuntu中打开spyder Python IDE 通常我会在 shell 中编写 spyder 它会打开spyder IDE 现在 当我在shell中编写spyder时 它只是换行 什么也没有发生 类似于按 enter 我如何找回
  • lua-socket:unix 域套接字?

    我使用的是 lua socket 3 0rc1 3 Ubuntu Trusty 附带的 和 lua 5 1 我正在尝试监听 unix 域套接字 我能找到的唯一示例代码是this http lua users org lists lua l
  • 在进行 sem_timedwait 时,我将如何应对系统时间的变化?

    假设我有一个使用的程序sem timedwait为了等待 100 毫秒 获取当前时间 添加 100 毫秒 将结果用作abs timeout 参见手册页 http man7 org linux man pages man3 sem wait
  • Bash:将字符串添加到文件末尾而不换行

    如何将字符串添加到文件末尾而不换行 例如 如果我使用 gt gt 它将添加到文件末尾并换行 cat list txt yourText1 root host 37 echo yourText2 gt gt list txt root hos
  • vim 中的 python 2 支持

    我正在尝试设置 YouCompleteMe 一个 vim 代码完成插件 当我运行 vim 时 它给我这个错误消息 YouCompleteMe unavailable 需要 python 2 x 我的 ubuntu 机器上安装了正确版本的 p
  • unix 下日期字段排序

    我有包含数十万条记录的文本文件 其中一个字段是日期字段 有没有办法根据日期字段对文件进行排序 09 APR 12 04 08 43 632279000 AM 19 MAR 12 03 53 38 189606000 PM 19 MAR 12
  • Linux无法删除文件

    当我找到文件时 我在删除它们时遇到问题 任务 必须找到带有空格的文件并将其删除 我的尝试 rm find L root grep i 但我有错误 rm cannot remove root test No such file or dire
  • 在汇编中使用 printf 会导致管道传输时输出为空,但可以在终端上使用

    无输出 https stackoverflow com questions 54507957 printf call from assembly do not print to stdout即使在终端上 当输出不包含换行符时也有相同的原因
  • 如何在线程创建和退出时调用函数?

    include
  • grep 排除文件的数组参数

    我想从我的文件中排除一些文件grep命令 为此我使用参数 exclude excluded file ext 为了更容易阅读 我想使用包含排除文件的 bash 数组 EXCLUDED FILES excluded file ext 然后将
  • Tomcat Intellij Idea:远程部署

    RackSpace 云服务器 Ubuntu 12 04 Intellij Idea 11 1 2 Windows 8 Tomcat 7 0 26 JDK 6 在 Intellij Idea 上 当我尝试在远程 Tomcat 7 服务器上运行
  • vmsplice() 和 TCP

    在原来的vmsplice 执行 有人建议 http lwn net Articles 181169 如果您的用户态缓冲区是管道中可容纳的最大页面数的 2 倍 则缓冲区后半部分成功的 vmsplice 将保证内核使用缓冲区的前半部分完成 但事
  • 如何处理文件中的特殊字符(ഀ)

    我有一个文件 当我打开它时 它看起来像这样 Notepad A B C D E 31 HB 39 Ph 49 32 FB 38 Ph 59 当我尝试从 WinScp 打开它时 它看起来如下所示 A B C D E 31 HB 39 Ph 4
  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终

随机推荐

  • 如何使用 Dapper 执行插入和返回插入的身份?

    如何使用 Dapper 执行数据库插入并返回插入的身份 我尝试过这样的事情 string sql DECLARE ID int INSERT INTO MyTable Stuff VALUES Stuff SELECT ID SCOPE I
  • .Net 如何允许可空值设置为 Null

    The Nullable
  • 将字典附加到字典[重复]

    这个问题在这里已经有答案了 我有两本现有词典 我希望将其中一本 附加 到另一本 我的意思是 另一个字典的键 值应该放入第一个字典中 例如 orig A 1 B 2 C 3 extra D 4 E 5 dest Something here
  • “Vary: Accept”HTTP 标头的作用是什么?

    我使用 PHP 生成动态网页 正如以下教程中所述 请参阅下面的链接 当 SERVER HTTP ACCEPT 允许时 XHTML 文档的 MIME 类型应为 application xhtml xml 由于您可以使用 2 个不同的 MIME
  • Java按引用传递问题[重复]

    这个问题在这里已经有答案了 可能的重复 Java是按引用传递吗 我这里有这门课 public class Cat private String catNum private static Cat cat1 private static Ca
  • 使用 SAX 解析器解析自关闭 XML 标签时遇到问题

    我在使用 SAX 解析自关闭 XML 标签时遇到问题 我正在尝试从 Google Base API 中提取链接标签 我在解析常规标签方面取得了一定的成功 这是 xml 的一个片段
  • 如何通过连接和基于行的限制(分页)在休眠中获得不同的结果?

    我正在尝试使用基于行的限制来实现分页 例如 setFirstResult 5 and setMaxResults 10 在具有与其他表的联接的 Hibernate Criteria 查询上 可以理解的是 数据被随机切断 并解释了原因here
  • 如何让div居中?

    我在 HTML 中居中 div 时遇到问题 垂直和水平 我的代码看起来像这样 div SOME HTML div container width 366px height 274px margin 50 top 137px left 188
  • hive 中的 regexp_extract 给出错误

    我的表中有一些数据 例如 id params 123 utm content doit utm source direct 234 utm content polo utm source AndroidNew 使用 regexp extra
  • Visual Studio 新项目“确定”按钮呈灰色

    我认为这只是意味着我缺少依赖项 但我无法创建任何类型的项目 控制台应用程序 Web 应用程序 Windows 窗体等 我运行的是 VS 2012 premium 您可能正在尝试将项目保存到您没有写入权限的目录位置 它可能是某处的网络驱动器
  • MATLAB - 编译 jpeg_read.c 创建 mexmaci64 文件时出错[重复]

    这个问题在这里已经有答案了 最近 我将 Matlab 项目从 Windows 操作系统转移到了 Mac 操作系统 所以我的 jpeg read mexw64 文件不再工作 我需要创建一个与 Mac OS 兼容的新 mexmaci64 文件
  • 显示应用程序端点的照片

    这是我的问题 我在一个大型 UCMA 项目上工作了 3 个月 现在我想添加一个小功能 我有很多可以动态添加 修改或删除的 ApplicationEndpoint 我希望每次创建 ApplicationEndpoint 时都指定将在 Micr
  • 位图、Bitmap.recycle()、弱引用和垃圾回收

    据我所知 在 Android 上 建议将 Bitmap 对象作为 WeakReferences 引用 以避免内存泄漏 当位图对象不再保留硬引用时 垃圾收集器将自动收集它 现在 如果我理解正确的话 必须始终调用 Bitmap recycle
  • C++ SDL 的作用是什么?做?

    screen SDL SetVideoMode 1000 1000 32 SDL HWSURFACE SDL FULLSCREEN 什么是 do in SDL HWSURFACE SDL FULLSCREEN 我尝试谷歌搜索 但谷歌不接受特
  • 画布渐变表现

    我目前正在使用画布编写一个小游戏 对于游戏 我需要某种雾来隐藏地图的大部分 并且只有玩家周围的一小部分区域应该可见 为此 我使用第二个画布覆盖游戏发生的画布 并用渐变填充它 从透明到黑色 function drawFog fogc clea
  • 连接到 firestore 模拟器时 Python firebase_admin 挂起

    我无法从 python 连接到 firestore 模拟器 连接并写入文档到真实项目工作正常 但是在设置环境时 设置函数永远不会解析变量 FIRESTORE EMULATOR HOST 代码 os environ FIRESTORE EMU
  • 如何在 Python OpenCV 中保存视频

    我已经使用 CV2 打开了一个视频 使用进行了一些更改cv2 rectangle 现在 当我这样做时cv2 imshow frame frame 它会播放视频 相反 我想以原始大小和帧速率将视频保存在某处 您可以逐帧保存视频 基于文档上的示
  • 返回在 javascript 对象中找不到的键的默认值

    当调用不在对象中的键时 将返回 undefined 我想返回一个我指定的字符串而不是未定义的字符串 例如 let obj key1 key1 let res obj key2 console log res I want console l
  • 如何在 Angularjs 中创建过滤器?

    我有这个课程集合 id 1 courseId 2 text John id 2 courseId 2 text Willi id 3 courseId 2 text Inga id 4 courseId 1 text Jerry id 5
  • 如何用 VI/VIM 编辑器中每次出现的不同单词替换查找单词?

    例如 我有一个文本 10 3 4 2 10 4 10 不 我想用不同的单词更改每 10 个 我知道 s 10 replace words gc 但它只让我像 yes no 一样进行交互式替换 但我想用不同的单词来更改 10 的每次出现 例如