如何在 Vim 中自动编辑多个文件?

2023-11-25

我有多个文件,我想在每个文件中删除第 1 行到第 55 行,添加注释引导符(例如,//)第 25 至 35 行,然后将更改保存到新文件中。

如何单独使用 Vim 或在 Bash 脚本的帮助下自动完成此操作?


尽管事实上使用ed or sed是一种常见的做法¹在这种情况下,有时使用 Vim 会方便得多。的确, 而不是写一个ed-喜欢脚本有点盲目,它经常 更容易首先使用其中之一执行所需的操作 文件交互地 in Vim:

vim -w log.vim file1.txt

然后对其余文件重复此操作:

for f in file*.txt; do vim -s log.vim "$f"; done

对于您的示例用例,log.vim文件可能会有 内容类似如下:

gg55dd:25,35s/^/\/\/ /
:w %_new
:q!

请注意,要使用新名称保存文件,您不应键入 直接使用,而是使用%替换,如图所示 以上——否则后续文件的所有修改 将被保存到同一个文件中,每隔一段时间就会覆盖其内容 时间。或者,您可以预先复制文件,然后 然后就地编辑副本(只需通过以下方式保存每个副本 发出:w不带参数的命令)。

这种方法的优点是您可以进行所有更改 交互式,确保您获得预期结果 在对其余文件进行编辑之前,至少对其中一个文件进行编辑 其中。


¹当然,您可以在ed- 也像时尚:

for f in file*.txt; do vim -c '1,55d|25,35s/^/\/\/ /|w!%_new|q!' "$f"; done
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Vim 中自动编辑多个文件? 的相关文章

  • 开发人员实际上是否使用 vim 在 Windows 操作系统上编写代码(Java)? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 符合 POSIX 标准的 shell 相当于 Bash“while read -d $'\0' ...”?

    我正在尝试使 Bash 脚本严格符合 POSIX 标准 即消除任何潜在的 Bashisms http mywiki wooledge org Bashism 通过使用checkbashisms px script filename 在给定的
  • 如何使用 vim 作为“git log”编辑器?

    当我跑步时git log 编辑器到底是什么git log正在使用 Also 无论如何我可以使用吗vim作为我的默认编辑器git log 如果我想搜索 git 日志 最好的方法是什么 现在我正在做类似的事情 git log grep bla
  • 如何在 Vim 中创建行号和文本之间的边框

    我希望在行号右侧和文本左侧有一条细边框线 您可以使用不同的颜色来突出显示LineNr 例如 hi LineNr cterm bold ctermbg gray ctermfg black gui bold guibg gray guifg
  • 移动相邻选项卡以进行拆分?

    有没有一种简单的方法可以将 Vim 中的相邻选项卡作为拆分移动到当前窗口 While looking around I reached a mailing list discussion where someone said it s th
  • 如何在 vim 中覆盖 ~/.vim 和 ~/.vimrc 路径(但不能覆盖其他路径)?

    假设我有一个所有 vim 配置的 tarball 通常在 vim 中的所有内容 插件 自动加载 颜色 所有这些东西 和一个 vimrc 文件 我将其提取到某个目录中 所以在我所在的目录 PWD 中 有一个 vim 文件夹和一个 vimrc
  • Vim 扩展(通过 Python)?

    是否可以通过自定义扩展 最好用 Python 编写 来扩展 vim 功能 理想情况下 我需要的是在命令模式下的自定义命令 例如 ESC do this do that vim 支持 python 脚本 我认为也支持 perl 您只需确保您使
  • 不将所需的文件包含到 vim 全方位补全中

    如果我尝试在具有 require xxx 语句的 Ruby 文件中自动完成 它会开始扫描所需的所有文件 以及所需文件所需的文件 它每次都会这样做 是否可以使 vim 自动完成功能不扫描所需文件或仅扫描特定路径中的文件 例如仅 app 以下之
  • Linux/Ubuntu 目录位置 ~/.vim/syntax/

    文件夹的默认位置在哪里 vim syntax 在Linux系统上 我正在尝试添加一个 Python 插件 您正在寻找 runtimepath 选项 该文档非常详细 使用 help runtimepath 但我会尝试在这里总结一下 The 运
  • Vim 和 snipMate(插件)- 添加新代码片段不起作用

    我正在尝试为我的 snipMate 插件创建一个新的片段 我使用一些名为 即 myfile endfile 的文件 所有 endfile 文件都应具有与 html 文件相同的 片段 所以我做了 cp html snippet endfile
  • vim e518:未知选项:

    我在 UNIX 系统上有一个文本文件 以下文本文件内容会产生问题 good ok line vi bad line ok ok line 所以如果我运行 vim test txt 我收到以下错误 test txt 3L 39C Error
  • vim 的 @@ 变量是什么?

    我知道通过输入 我执行最后一个 命令 但谁能解释一下什么 是在下面的代码中 在 vim 帮助文件中找到 function CountSpaces type let sel save selection let reg save if a 0
  • VIM:可用的快捷方式?

    我在 vim 中使用了许多快捷方式 其他快捷方式由插件使用 有时我想为新命令添加快捷方式 但事后请注意该快捷方式已被使用 有没有办法查看 VIM 中所有可用快捷键的列表 所有 ctrl shift alt 快捷键 Type help ind
  • 如何通过 SSH 启动进程,使其保持运行?

    我有三个文件 Monitor sh 它启动 python 脚本 sudo python webCheck sudo python apiCheck 以及其他的 webCheck 和 apiCheck 它应该在我关闭终端后在后台运行 它无限循
  • 如何在 IdeaVIM 中配置 Vim 的 Ctrl + N 和 Ctrl + P 补全?

    在Vim中我们可以使用Ctrl N or Ctrl P完成代码补全 如何在 IdeaVim for IntelliJ 中配置它 Alt and Alt Shift 既可以在普通 IntelliJ 中工作 也可以在安装了 IdeaVim 的情
  • Vim 无法在 OS X 上使用 python 进行编译

    我一直在尝试编译vim 7 3 with 蟒蛇2 7支持苹果系统 X 10 6 Vim 本身编译得很好 但嵌入的 python 编译得不太好 我已采取的步骤 hg clone https vim googlecode com hg vim
  • git commit 保存 vim 文件时出错

    我正在遵循简单的 git 指南nettuts 简易 git 指南 http net tutsplus com tutorials other easy version control with git 我在我的中初始化了一个空的 git 实
  • VIM 分块插入

    我想在 VIM 中选定的文本块的开头插入一个哈希 Ruby 注释 我在可视模式下选择了线条 但如何对所有线条执行相同的操作 您有两个主要选择 在块视觉模式中选择 ctrl v 然后使用I沿着整个块的左侧插入相同的东西 相似地A追加 看分块运
  • Vim 错误格式和 jslint

    我正在尝试让 makeprg 和 errorformat 与 VIM 和 jslint 一起使用 但似乎无法为我的生活提供正确的错误格式 我正在使用 jslint 的 NodeJS 版本 它会产生如下结果 1 116 9 The body
  • vim 将输出重定向到quickfix

    是否可以将命令的输出重定向到快速修复窗口 我正在运行的命令是 java r 并希望输出能够进入快速修复窗口 我建议两个选项之一 配置makeprg像您想要的那样运行 java 或者创建映射或命令来填充快速修复列表而不更改任何其他内容 选项

随机推荐

  • MATLAB 中的信号量和锁

    我正在开发一个 MATLAB 项目 希望有两个 MATLAB 实例并行运行并共享数据 我将调用这些实例MAT 1 and MAT 2 更具体地说 该系统的架构是 MAT 1按顺序处理图像 使用以下命令一一读取它们imread 并使用输出每个
  • C++11 与现有库/框架的兼容性

    我想知道一些我还没有找到令人信服的答案的事情 情况 带有一些库 例如 gtkmm 的系统在未启用 c 11 的情况下进行编译 启用 C 11 编译的应用程序 两者都使用相同的 GCC 版本 环境进行编译和链接 该应用程序对使用 std st
  • 使用静态向量时_Orphan_range崩溃

    在我的项目中 我使用静态对象的构造函数来收集指针 就像注册方法一样 很简单 没有魔法 但在开始时我遇到了崩溃 我无法解释这里发生了什么 在使用 MSVC 或 Clang 的 Windows 上可以重现崩溃 两者都使用 MSVC 标头 给出以
  • conda 环境是否可以访问“root”环境? (==系统包)?

    conda 中的 根 环境是什么 它只是一个 仅 使用系统包的环境吗 其他环境是否也使用系统包 我假设优先考虑它们的重复版本 或者我是否需要将所有软件包安装在我想要使用它们的环境中 有没有办法将其配置为选项 我安装了系统包 但在 conda
  • 需要一次遍历 SQL 表行(表太大而无法使用适配器。填充)

    对我来说 阅读这样一个小型 SQL Server 2005 表很容易 string cmdText select from myTable SqlDataAdapter adapter new SqlDataAdapter cmdText
  • AS3 函数中可以有“ByRef”参数吗?

    任何想法如何返回多个变量来自 ActionScript 3 中的函数 任何像 VB NET 这样的东西你都可以拥有输入参数的变量修改 ByRef 参数 Sub do ByRef inout As Integer inout 5 End Su
  • 使用 dplyr 将某些值设置为 NA

    我试图找出一种简单的方法来使用 dplyr 数据集 dat 变量 x 执行类似的操作 dat x dat x lt 0 NA 应该很简单 但这是我目前能做的最好的事情 有更容易的方法吗 dat dat gt mutate x ifelse
  • NetDataContractSerializer 与 DataContractSerializer

    我们有一个应用程序 其中包含我们希望在数据库中保持序列化的对象 目前我们正在使用NetDataContractSerializer 但最近发现 由于 Net类型涉及的信息 它会创建巨大的文件 这意味着应用程序缓慢 即使对于基本对象也是如此
  • Bootstrap - 更改断点导航栏?

    这个问题已经被问过here但由于 Javascript 这不起作用 因此 在提供的答案中 仅更改了 CSS 但未更改 JS 这意味着导航栏的内容仍然可见 而切换器则不可见 有什么解决办法吗 Edit 我的问题是如何更改 Bootstrap
  • 当周跨越两年时,从 PHP date() 获取一年中的年份和周

    我在使用 PHP 时遇到了一个有趣的问题date 功能 还没有运气在 SO 上找到有关此问题的讨论或使用 Google 但也许其他人以前遇到过同样的问题 我正在尝试获取给定时间戳的年份和年份 这是我正在使用的代码 date Y WW 截至今
  • 使用带有 REPL 的应用程序时如何解决承诺

    我有一个基本的 Node Web 服务器 Koa js ORM 我喜欢以REPL这意味着我可以像 CLI 工具一样使用我的应用程序 我的所有查询都返回 Promises 但我不知道如何在 REPL 中解决它们 我该如何解决它们 例如 以下代
  • 将音频文件保存在 Rails 中

    我有一个简单的 Rails 应用程序 我使用 HTML5 音频 Web api 和 recorder js 来录制语音 然后将其保存在应用程序服务器上 录音进展顺利 我可以重放录音并听到声音 但是当我将其发布到服务器上时 我的音频文件是空白
  • 在另一个应用程序中动态编译和运行反应本机应用程序

    我需要创建一个包含其他应用程序并可以运行它们的移动应用程序 它基本上就像一个 应用程序中心 其中有一个应用程序列表 我们在服务器上发布 用户可以打开其中一个应用程序 从而导致该应用程序被打开 想一想世博会的应用程序 用户可以扫描他的应用程序
  • Protractor 0.16.1 e2e AngularJS - 启动 selenium 独立服务器... events.js:72 错误:spawn ENOENT

    尝试的项目 https github com yearofmoo angularjs seed repo 环境 Windows 7 64 位NodeJS v 0 10 24量角器 v 0 16 1咕噜 v0 4 2grunt cli v0
  • 当我在 r 中使用 xml 时发现此错误消息

    您好 我正在 Rstudio 中使用 xml 目标是将 xml 转换为 r 数据框 我正在尝试使用包文件夹中名为 tites xml 的示例数据 tides system file exampleData tides xml package
  • 如何将两个 foreach 循环合并为一个

    语言是PHP 我有一个 foreach a as b 和另一个 foreach c as d gt e 我如何将它们结合起来作为一个整体来阅读 我厌倦了 foreach a as b c as d gt e 但那是垃圾 您可能感兴趣SPL
  • 为什么模板类的实现和声明应该在同一个头文件中? [复制]

    这个问题在这里已经有答案了 为什么模板类的实现和声明应该在同一个头文件中 你们中有人能举例解释一下吗 编译器需要访问整个模板定义 而不仅仅是签名 以便为模板的每个实例化生成代码 因此您需要将函数的定义移至标头 欲了解更多详细信息 请阅读包容
  • golang 相当于 PHP crypt()

    PHP 中的这行代码计算结果为 true echo 2a 09 f5561d2634fb28a969f2dO8QeQ70f4bjCnF GvPpjj 8jgmtzZP2 crypt enter new password 2a 09 f556
  • 何时在 Django 中使用 get、get_queryset、get_context_data?

    我最近了解到 当您特别想做默认视图之外的事情时 应该覆盖 get 方法 class ExampleView generic ListView template name ppm ppm html def get self request m
  • 如何在 Vim 中自动编辑多个文件?

    我有多个文件 我想在每个文件中删除第 1 行到第 55 行 添加注释引导符 例如 第 25 至 35 行 然后将更改保存到新文件中 如何单独使用 Vim 或在 Bash 脚本的帮助下自动完成此操作 尽管事实上使用ed or sed是一种常见