vim 中递归搜索模式的函数

2024-04-07

我有一个包含简单文本行的文本文件。我想创建一个函数vim (and gvim) 文本编辑器

can be sent a variable number of patterns and 
it should find lines will all patterns (in any order) 
and keep only these lines 
while deleting the rest. 

我在网上搜索并找到了一些有用的链接,但没有一个可以完成上述所有操作:

以下将查找并删除所有不包含该模式的行:

 :v/pattern/d

可以使用脚本完成多次搜索和突出显示,如下所示MultipleSearch http://www.vim.org/scripts/script.php?script_id=479 http://www.vim.org/scripts/script.php?script_id=479。布尔逻辑搜索可以通过以下方式完成LogiPat script https://vim.sourceforge.io/scripts/script.php?script_id=1290 https://vim.sourceforge.io/scripts/script.php?script_id=1290。过滤包也可用,但我无法使其工作:http://www.vim.org/scripts/script.php?script_id=2759 http://www.vim.org/scripts/script.php?script_id=2759

要使用 AND 搜索并保留具有多种模式的行:

":v/.*pattern1\&.*pattern2/d"

但我每次都输入代码。

如何创建一个递归运行的函数:v/pattern/d只查找包含所有模式的行?我希望该函数可以运行为:

:Myfn pattern1 pattern2 pattern3

编辑:我尝试为此函数编写以下代码,尝试在 vim 中使用 Linux grep 命令:

:function Myfn (Title, ...)
  : let outstr=""
  : for s in a:000
  :   outstr=!echo outstr | grep s
  : endfor
  : return outstr
 : endfunction

但我收到以下错误:

Not an editor command:   :   outstr=!echo outstr | grep s

与或

:v/pattern1\|pattern2\|pattern3/d

与与

:v/pattern1\&.*pattern2\&.*pattern/d

任何订单

:v/.*pattern1\&.*pattern2\&.*pattern3/d

(抱歉,看起来您的解决方案中已经包含了此内容)

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

vim 中递归搜索模式的函数 的相关文章

  • vim 中项目列表的智能硬包装

    我喜欢 vim 而且我真的很喜欢在写文字时将它们硬包装起来 Tim Pope 的 markdown 插件很棒 并且构建得当我尝试硬包装项目列表时它可以正确完成工作 好吧 这就是我所说的正确完成工作的意思 here I write a lon
  • 为什么 _ destroy 在语句末尾?

    我看到了其他一些问题answers https stackoverflow com a 25877389 221955说明let foo 在语句末尾而不是在作用域退出时销毁结果 这就是let a foo does 我找不到任何官方描述 也找
  • 如何跳转到 vim 中不同选项卡内的标记?

    我使用 MacVim 通常会打开许多 选项卡 我希望能够在任何打开的文件中放置标记并在它们之间跳转 mK and K当标记位于同一个选项卡中时效果很好 但我必须使用gt找到选项卡 然后K找到标记 一定有更好的方法吗 这是一个快速而肮脏的技巧
  • 使用 cscope 在头文件和实现文件之间切换的 Vim 脚本

    我目前使用的是A vim http vim wikia com wiki Easily switch between source and header file在头文件和实现文件之间交换的插件 该脚本的局限性在于 它仅在两者位于同一文件夹
  • 你能强制 Vim 在文件末尾显示一个空行吗?

    当我在记事本中打开文本文件时 如果包含文本的最后一行末尾有回车符 则会显示一个空行 然而 在 Vim 中它不显示这个空行 我注意到的另一件事是 Vim 编辑器默认在最后一行添加回车符 即使它没有显示 我可以这么说 因为如果我在记事本中打开在
  • “Alternative”中的模式匹配

    我有一个函数 它的参数进行模式匹配以生成计算StateT Maybe 可以这么说 此计算在运行时可能会失败 在这种情况下 我希望当前的模式匹配分支失败 我非常怀疑是否有可能有类似的东西 compute Int gt StateT Maybe
  • 使用 Webpack 波形符别名时通过 Vim 中的“gf”解析 JavaScript 模块

    我是使用波浪号的 Vue js 项目的新成员 模块导入中的符号 如 import WhateverApi from api whatever 项目存储库包含所有类型的文件 Vagrant 机器 Laravel 后端应用程序 配置文件和 Vu
  • Vim - 删除多行中的直到(包括)字符

    我有这个代码 def foo c Char c match case a B 我的光标位于后面的空格上 我想删除所有内容 直到 包括 我怎样才能做到这一点 我可以在光标位于第一行任意位置时执行相同操作吗 块中的任何位置 并将光标放在 d e
  • Vim NerdCommenter:在 vimrc 中添加新文件类型

    有没有办法在 vimrc 中为 NerdCommenter 定义新的文件类型注释 它已经可以工作了 但是如果我可以将其直接放入 vimrc 中 备份配置会更容易 Thanks NERDCommenter 能够解析commentstring选
  • 为什么 "map! :q " 在 vi​​m 中不起作用?

    I input map
  • Vim 中的类和函数名称高亮显示

    在沉迷于它的模态输入之后 我最近刚刚从 Textmate 设置了我的 Vim 环境 不过 Vim 中的语法高亮似乎不太美观 我用 C 编写代码 由于函数调用和类名无法突出显示 因此代码更难以阅读 我玩了一下配色方案 但找不到任何与 类名 或
  • 如何在会话自动加载的同时在 vim 中打开文件?

    我在 vimrc 中有以下代码 可以在 vim 启动时自动保存 加载会话 Session saving Automatically save rewrite the session when leaving Vim augroup leav
  • 在 Vim 中搜索并替换为递增值

    假设我写了一个简单的 CSS 规则 如下所示 star 10 background url stars png no repeat 0 0 而我需要10个 所以我复制了9次 star 10 background url stars png
  • 我在 Python 中查找重复循环的正则表达式模式有什么问题?

    我想匹配任何具有重复循环的字符串 就像这个数据一样 3333333333333333333333333333333333333333 1 digit cycle 3 1666666666666666666666666666666666666
  • 如何在 Vim 中从命令行模式复制文本?

    比如说 我刚刚在 Vim 中运行了这个命令 nmap
  • Vim 中的空格作为制表符和退格键行为

    在我的 vimrc 中我有 set shiftwidth 4 set tabstop 4 set expandtab 当我点击 Tab 按钮时 设置为使用 4 个空格而不是 Tab 但是当我在 Tab 之后按退格键时 我需要退格所有 4 个
  • vim - 如何删除 netrw?

    我正在测试https github com skwp dotfiles https github com skwp dotfiles 不幸的是它确实安装了很多我不想要的东西 例如 现在 使用空的 vimrc 当我打开 vim 时 我得到 N
  • 在 Vim 中的缩进线上按“Home”

    我有一个坏习惯 就是使用 home 键返回到行首 当我最近开始使用 vim 时 我注意到当我在缩进的行上按 home 键时 它会让我回到该行的开头 在 Notepad 我曾经使用的编辑器 中 它会让我返回到该行代码的开头 就在缩进之后 有没
  • Vim / vi 生存指南

    基本的 vim 命令有哪些 新用户需要了解什么才能避免陷入麻烦 请每条评论一条命令 我发现不可替代的 因为它也可以在 vi 中使用 与 vim 的视觉模式不同 是标记 您可以用以下标记标记不同的点m 小写 然后是您选择的字母 例如 x 然后
  • vim 映射键不起作用

    我一直在尝试映射 ctrl 来在 vim 的插入模式下保存 它似乎永远不起作用 http vim wikia com wiki Map Ctrl S to save current or new files http vim wikia c

随机推荐

  • 客户端Web - 如何随时获取当前记录ID

    我正在努力 基于工作流程状态的不同权限 https stackoverflow com questions 10994216 different permissions based on workflow state问题 但我正在努力解决这
  • 完美穿越

    我正在考虑一个与完美转发有一些相似之处的问题 但是函数参数没有传递给被调用的函数 而是返回了 这就是为什么我称之为 完美传递 问题如下 假设我们有一个函数 它通过引用 可能还有一些额外的参数 获取一个对象 修改该对象 然后返回修改后的对象
  • parseFloat 舍入

    我有一个 javascript 函数 可以自动将输入字段添加在一起 但是添加像 1 35 1 35 1 35 这样的数字会得到 4 050000000000001 的输出 仅作为示例 如何将总数四舍五入到小数点后第二位而不是那个长字符串 输
  • 深层类继承层次结构——坏主意?

    希望高手能指点迷津 非常高的概述是 我不是编码初学者 但对 OOP 仍然是新手 这组消息类是我们正在编写的大型模拟应用程序的核心 我不想愚蠢地这样做 这个接口将应用程序从定序器到执行器切成两半 反之亦然 我的问题是 拥有这么深的继承层次结构
  • Android 布局 XML 中的“@id/android:list”与“@android:id/list”

    在 Android 自己的文档以及我继承的应用程序中 我有时会看到带有以下形式的视图 ID id android list 有时用表格 android id list 也就是说 android 有时位于 和 id 之间 有时位于 和实际ID
  • 条件内连接

    我希望能够根据表达式的结果内连接两个表 到目前为止我一直在尝试的 INNER JOIN CASE WHEN RegT Type 1 THEN TimeRegistration ELSE DrivingRegistration AS RReg
  • C 程序中的 C++ dll

    我想创建一个 dll 库C 代码并使用它C程序 我只想导出一个函数 GLboolean load obj const char filename GLuint object list 库中的头文件 ifndef OBJ H define O
  • jqgrid添加后如何清除添加表单中的自动完成框内容

    jqGrid 添加表单包含使用以下代码的自动完成框 如果新行添加到 jqgrid 自动完成字段不会被清除 仍然显示添加的行内容 简单的文本框列已正确清除 如何清除自动完成框 var grid grid grid jqGrid url Get
  • NuGet 更新和条件引用

    我们的 nupkg 包包含同一 dll 的多个版本 x86 x64 AnyCPU 并且在 csproj 文件中 在引用中 我使用条件引用根据当前平台集选择特定的 dll 因此 我对同一个库有多个引用 只是不同的平台编译 这是我的 cspro
  • JavaScript 中“>>>”是什么意思? [复制]

    这个问题在这里已经有答案了 我有一段我想理解的 JavaScript 代码 return n gt gt gt 0 2 34e10 那么 gt gt gt 是什么意思呢 预先感谢 这是我的第一个问题 It s a 零填充右移 https d
  • 减去除非负数然后返回 0

    我先说 这只是为了满足我的好奇心 而不是在编码项目上需要帮助 但我想知道是否有人知道一个类似绝对值的函数 特别是在Python中 但我会接受一个有效的数学概念 给定一个数字如果为负则返回0 如果为正则返回该数字 伪代码 def myFunc
  • SvelteKit:如何通过别名(如 $routes)从组件和端点引用 /routes 文件夹?

    接下来是我的 简化的 项目结构 appname src lib routes jsconfig json 在 jsconfig js 文件中 我有一个路径键 其别名为 lib 形式的 src lib 文件夹 compilerOptions
  • 无法从客户端连接到 PostgreSQL - 错误超时

    经过很多天尝试连接到我的 PostgreSQL 实例后 我决定是时候寻求帮助了 我正在尝试从 Windows 计算机连接到我的 PostgreSQL 数据库 我正在尝试 pgAdmin 4 和 dBeaver 但都无法连接 下面是我使用 d
  • 如何在 TypeScript 中使用 Mocha 和 Jest 而不发生冲突?

    我正在尝试在一个项目上安装带有类型的 Mocha 和 Jest 我们使用严格的类型检查 因此我收到与冲突的全局类型相关的错误 我试图创建不明确的模块声明 仅定义 Mochatypes at tsconfig 我一直在尝试删除 Jest 的声
  • 如何在二维码上添加徽标

    我正在使用 zxing java 生成二维码 想知道一种向二维码添加徽标的方法 是否有任何内置方法可以为其添加徽标或任何替代方法 您可能必须使用另一个图像库添加图像覆盖 我设法找到了能够做到这一点的资源 http skrymerdev wo
  • JVM CPU 峰值故障排除

    我们在其中一台应用程序服务器上发现了一个有趣的 尽管相当严重 问题 在某个时间点 运行 Web 应用程序的 JVM 的 CPU 使用率开始上升 并持续上升 直到应用程序最终减慢到爬行 修复此问题的唯一方法是重新启动应用程序服务器软件 应用服
  • 使用 REST API 将端口绑定到主机接口

    命令行界面的文档说明如下 将容器的端口绑定到主机的特定接口 系统 使用docker run命令的 p参数 一般语法 docker run p
  • 是否可以使用 Apache 记录所有 HTTP 请求标头?

    如何将 apache 收到的 HTTP 请求标头 全部 的内容记录到日志文件中 目前我的apache组合日志格式配置是 LogFormat h l u t r gt s b Referer i User Agent i Cookie i c
  • 使用 Jquery 的模态 PDF IFRAME

    这是我的脚本 运行完美 没有问题 现在为什么我将其发布在这里 主要是为了我可以增强它并使其变得更好 我也认为这可以帮助其他人 JQUERY 这是一个工作示例http jsfiddle net cornelas 4eUgf 2 http js
  • vim 中递归搜索模式的函数

    我有一个包含简单文本行的文本文件 我想创建一个函数vim and gvim 文本编辑器 can be sent a variable number of patterns and it should find lines will all