如何用 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 编辑器中每次出现的不同单词替换查找单词? 的相关文章

  • 期待、互动,然后再次期待

    有几篇关于相同内容的帖子 但我仍然无法使我的期望脚本正常工作 我的目的是自动化一切 但保留用户输入的密码 所以脚本有 3 个部分 自动登录 给予用户交互以输入密码 将控制权交还给 Expect 脚本以继续工作 所以我有一个将生成的脚本 其中
  • Linux Shellcode“你好,世界!”

    我有以下可用的 NASM 代码 global start section text start mov eax 0x4 mov ebx 0x1 mov ecx message mov edx 0xF int 0x80 mov eax 0x1
  • 如果目录不存在,有没有办法让 mv 创建要移动到的目录?

    因此 如果我在主目录中并且想将 foo c 移动到 bar baz foo c 但这些目录不存在 是否有某种方法可以自动创建这些目录 以便你只需要输入 mv foo c bar baz 一切都会顺利吗 似乎您可以将 mv 别名为一个简单的
  • 是否可以在unix cut 命令中使用字符串作为分隔符?

    如果我想使用字符串作为分隔符来剪切文本列表 这可能吗 例如 我有一个目录 其中一系列 shell 脚本调用相同的 perl 脚本 abc pl 所以当我这样做时 grep abc pl 在该目录中 它给了我以下结果 xyz sh abc p
  • 有没有办法只安装mysql客户端(Linux)? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有不需要安装整个mysql db安装包的Linux mysql命令行工具 我想做的是从服务器 1 应用程序服务器 执行将在服务器 2
  • 我可以在 VIM 或 Perl 中替换单个正则表达式中的多个项目吗?

    假设我有字符串 The Quick Brown Fox Jumps Over the Lazy Dog 我可以用一个正则表达式将其更改为 The Slow Brown Fox Jumps Over the Energy Dog 吗 目前 我
  • X 服务器使用什么像素格式?

    X 服务器使用什么像素格式 RGBA ARBG BGRA 如果有任何特定格式的话 Update 我专门寻找有关颜色分量顺序和位模式的信息 你的意思是帧缓冲区格式 或者所有支持的像素图格式 无论是哪一种 都取决于您的图形硬件 驱动程序和配置
  • _dl_runtime_resolve -- 共享对象何时加载到内存中?

    我们有一个对性能要求很高的消息处理系统 最近我们注意到第一条消息比后续消息花费的时间要长很多倍 当它通过我们的系统时 会发生大量转换和消息增强 其中大部分是通过外部库完成的 我刚刚描述了这个问题 使用 callgrind 将仅一条消息的 运
  • 如何从python导入路径中删除当前目录

    我想使用 Mercurial 存储库hg本身 也就是说 我克隆了 Mercurialhttps www mercurial scm org repo hg https www mercurial scm org repo hg并想运行一些h
  • '>&0' 有用途吗(重定向到标准输入)?

    在 bash 中你可以这样做 echo test gt 1 重定向到标准输出 尽管它已经到那里了 echo test gt 2 重定向到标准错误 echo test gt 0 重定向到标准输入 当我做最后一个时 我的终端仍然打印test就像
  • C/C++ with GCC:静态地将资源文件添加到可执行文件/库

    有人知道如何使用 GCC 将任何资源文件静态编译为可执行文件或共享库文件吗 例如 我想添加永远不会改变的图像文件 如果它们改变了 我无论如何都必须替换该文件 并且不希望它们位于文件系统中 如果这是可能的 我认为这是因为 Visual C f
  • 如何从 Linux 命令行打开 Sublime Text 2 文件到选项卡,而不是新窗口

    我有 ST2 设置 这样我就可以执行 sublime file txt 它将在 ST2 窗口中打开 但是我怎样才能让它在当前打开的窗口的新选项卡中打开呢 尝试 Sublime 命令行帮助 subl 帮助 Sublime Text 2 内部版
  • BlueZ D-Bus C,应用 BLE

    我正在尝试编写一个应用程序来搜索附近的蓝牙设备并与它们通信 我的应用程序将用 C 语言编写 并打算在 Linux 下工作 是否有通过 C 中的 D Bus 使用 BlueZ 的教程或示例 此应用程序的目的是从 BLE 中的文件发送数据 你能
  • 警告构建使用导出符号的内核模块

    我有两个内核模块 例如 modA 和 modB modA 导出一个符号EXPORT SYMBOL symA modB 使用它 我有标题modA h对于modA extern void symA int param and in modB c
  • 在 Mac OS X 中将 Caps Lock 用作 Esc

    How do I make Caps Lock work like Esc in Mac OS X Edit As described in this answer https stackoverflow com a 40254864 66
  • 终止 ssh 会话会终止正在运行的进程

    我正在使用 ssh 连接到我的 ubuntu 服务器 我使用命令启动编码程序 然而 似乎当我的 ssh 会话关闭时 因为我在进入睡眠状态的笔记本电脑上启动它 有没有办法避免这种情况 当然 阻止我的笔记本电脑休眠并不是永久的解决方案 运行你的
  • 查找当前打开的文件句柄数(不是 lsof )

    在 NIX系统上 有没有办法找出当前正在运行的进程中有多少个打开的文件句柄 我正在从正在运行的进程中寻找在 C 中使用的 API 或公式 在某些系统上 见下文 您可以在 proc pid fd 中对它们进行计数 如果不属于其中之一 请参阅下
  • gnutls_handshake() 失败:握手失败 GIT

    一切都工作正常 但突然我收到错误 致命 无法访问 https 电子邮件受保护 cdn cgi l email protection name repo name git gnutls handshake 失败 握手失败 我在我的计算机和 E
  • 我可以告诉 Linux 不要交换特定进程的内存吗?

    有没有办法告诉 Linux 它不应该将特定进程的内存交换到磁盘 它是一个 Java 应用程序 所以理想情况下我希望有一种方法可以从命令行执行此操作 我知道您可以将全局交换性设置为 0 但这明智吗 您可以通过以下方式执行此操作姆洛克尔 2 h
  • 打破条件变量死锁

    我遇到这样的情况 线程 1 正在等待条件变量 A 该变量应该由线程 2 唤醒 现在线程 2 正在等待条件变量 B 该变量应该由线程 1 唤醒 在我使用的场景中条件变量 我无法避免这样的死锁情况 我检测到循环 死锁 并终止死锁参与者的线程之一

随机推荐

  • 如何使用 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 的每次出现 例如