如何在 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 中自动编辑多个文件? 的相关文章

  • 如何使用 system() 函数的第二个参数(输入)

    vim 的文档system函数对第二个参数是这样说的 当给出 input 时 该字符串将写入文件并作为标准输入传递给命令 我从中了解到的是 如果你system通话看起来像这样 call system node something js fi
  • 为什么在 Vim 的插入模式下粘贴长一行非常慢?

    昨天 当我尝试将 1200 行 每行 80 个字符 粘贴到 Vim 时 我的 Macbook 被卡住了 下载文件而不是粘贴文本要快得多 我认为这个问题可能是互联网运营商允许上传速度比下载速度慢的原因 如果您将其粘贴到终端窗口中 Vim 会认
  • Vim 重复点(“.”)命令缓冲区?

    我真的很喜欢 YankRing 的行为 它让我可以访问我最近完成的几件事y固定或d已删除或c不假思索地被吊死了 然而 这样的补充功能对于 重复命令 最常见的是当我键入我真正想重复的内容时 然后按x清理一些东西 通常 可以通过视觉模式拉动我刚
  • 如何在 Vim 中创建带有控件和功能键的映射?

    我想要一个映射来快速退出所有缓冲区 以便在我对大量文件进行 vimdiff 时使用 事实证明 Control 和功能键在一起具有很好的安全性 这样我就不会不小心按下这个组合 无意中离开 Vim 我尝试了以下映射 map
  • Windows 上 gnu make 的 libintl3 和 libiconv2 在哪里,需要在 MinGW 上用 ruby​​ 编译 vim

    我正在尝试为 Windows 运行 gnu make 但它无法运行 因为libint3 dll没找到 果然 http gnuwin32 sourceforge net packages make htm http gnuwin32 sour
  • 按文件类型设置 Vim 空白首选项

    在我的工作中 我需要遵循房屋风格进行缩进 如下所示 编码 html 和 ruby 时有 2 个空格 编码 javascript 时使用制表符 建议使用 tabwidth 4 为每个文件类型指定不同的空白首选项的最佳方法是什么 方法有很多 但
  • 如何在 Vim 中突出显示 Bash 脚本?

    我的 Vim 编辑器自动突出显示 PHP 文件 vim file php HTML 文件 vim file html 等等 但是当我输入 vim file在里面写一个Bash脚本 它不会突出显示它 我如何告诉 Vim 将其突出显示为 Bas
  • Vim 插入模式下光标线颜色变化

    有一个很好的片段可以改变光标颜色 if term xterm rxvt use an orange cursor in insert mode let t SI
  • 如何禁用vim的switch case缩进?

    我目前正在与 Vim 作斗争 我似乎无法让缩进选项达到我想要的效果 这是我的设置 我将它们放在 vimrc 的底部以确保它们优先 正如你所看到的 我有点疯狂 所以我尝试关闭几乎所有的东西 set cindent set cinkeys o
  • 代码折叠未保存在我的 vimrc 中

    我将以下代码添加到我的 vimrc 中 save and restore folds when a file is closed and re opened autocmd BufWinLeave mkview autocmd BufWin
  • 改变 vim 'gutter' 颜色

    请参阅下面我如何配置 vim 的屏幕截图 gutter 即出现 和 符号的位置 使用 vim 的这个令人惊叹的 sublime text 端口显示我的 git 状态 https github com airblade vim gitgutt
  • Vim 自动缩进换行

    我如何让vim将光标放在大括号内以新行开始 即用 表示光标位置 class 现在我的设置只能做到这一点 class 我在 vimrc 文件中得到了这个 设置自动缩进 shiftwidth 2 tabstop 2 noexpandtab 基本
  • 从 `git commit` 调用时 Vim 使用非标准配置?

    我注意到每当我编写提交消息时 git 似乎都会使用不同的 vim 设置 我有git svn安装 Macports 我已经检查过 MYVIMRC变量 它被设置为正确的文件 尽管如此 每次我提交消息时 我都会受到每行 80 个字符的限制 区分大
  • 如何翻转vim中视觉选择的线条?

    我想进行视觉选择并将其翻转 以便选择的第一行位于底部 从
  • 在文件中逐块更改文件类型(或其他 Vim 设置)?

    我在 Vim 中编写了很多 Perl 程序 通常我只是将一些 CGI 脚本组合在一起 然后将 CSS 直接放入程序代码中 所以最近我问自己是否有可能在我的代码中的这些块周围放置一些 Vim 特定的注释 以便 vim 突出显示特定区域而不是
  • Vim NERDTree:仅显示 .txt 文件?

    Using NERDTree 插件 http www vim org scripts script php script id 1658 我只想查看 txt 文件 有一个NERDTreeIgnore变量 但我想要类似的东西NERDTreeW
  • 在vim中查找精确匹配

    Using or 能够在 vim 中找到单词的匹配项 但我怎样才能找到完全匹配的呢 例如 我的文本包含以下单词 a aa aaa aaaa aa我输入 aa这将找到包含模式 aa 的所有字符串 但是如果我想准确找到怎么办aa并不是aaaa
  • 如何在shell脚本中运行R代码?

    我有一个 R 文件 myfile R 我想使用 shell 脚本来运行它 我怎样才能做到这一点 我试过这个 bin bash Rscript myfile R 但它给了我这个错误 Rscript 找不到命令 我也尝试过这个 bin bash
  • 在 vim 折叠线中语法高亮 Python

    我发现代码折叠 http en wikipedia org wiki Code folding帮助我更好地组织我的文件 因此 在我的底部 vimrc 我启用vim代码折叠 http vimdoc sourceforge net htmldo
  • 如何在 Vim 中对数字和文字列进行排序

    使用 Vim 6 0 假设我正在编辑这个文件 sdfsdg dfgdfg 34 12 2 4 45 1 34 5 如何对第二列进行排序 如果您有合适的 shell 请选择您的号码并运行命令 lt gt sort n k 2 如果您要在视觉模

随机推荐

  • 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是一种常见