Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将用户命令添加到vi/vim中,以具有多个条件来搜索内容?_Vim_Vi_Vim Plugin - Fatal编程技术网

如何将用户命令添加到vi/vim中,以具有多个条件来搜索内容?

如何将用户命令添加到vi/vim中,以具有多个条件来搜索内容?,vim,vi,vim-plugin,Vim,Vi,Vim Plugin,我们的服务器只有vi/vim来检查日志文件,我觉得在vi中搜索是痛苦和有限的。 我想知道是否可以在路径中提供一个可执行文件,然后使用vi用户命令调用它,并且用户命令能够接受多个条件,例如A=value1&&B=value2,A=value1 | B=value2,etc,然后在openvi编辑器中搜索内容,并将光标放在匹配的文本中 如果可能的话,请描述一些步骤。如果您的机器上的实际上是Vim,您应该能够利用“快速修复”功能。简而言之,您可以: 向Vim提供位置列表 可选地告诉Vim如何解析该列

我们的服务器只有vi/vim来检查日志文件,我觉得在vi中搜索是痛苦和有限的。 我想知道是否可以在路径中提供一个可执行文件,然后使用
vi
用户命令调用它,并且用户命令能够接受多个条件,例如
A=value1&&B=value2
A=value1 | B=value2
,etc,然后在open
vi
编辑器中搜索内容,并将光标放在匹配的文本中


如果可能的话,请描述一些步骤。

如果您的机器上的实际上是Vim,您应该能够利用“快速修复”功能。简而言之,您可以:

  • 向Vim提供位置列表
  • 可选地告诉Vim如何解析该列表
  • 使用类似于
    :cnext
    :lpprevious
    的命令浏览该列表
  • 在特殊窗口中显示该列表
  • 批量操作列表中的每一行
在最简单的场景中,假设的外部程序将以Vim已经理解的方式输出一个列表,如:

filename.txt:3067:12:some text
filename.txt:4321:7:some text
可“直接”馈送至Vim:

通过告诉Vim使用您的程序,而不是
:grep
命令的
grep
,可以从Vim内部完成这一切:

set grepprg=yourcommand
并且做:

:grep <your arguments>

将基本正则表达式语法与vim的本机搜索命令一起使用可以覆盖大多数搜索任务。您的条件有多复杂?因为vim搜索允许正则表达式,所以可以处理/搜索每种正则语言。它不太可能有一个条件,不能用vim搜索,但可以用另一个通用搜索来搜索。这种情况很可能需要一个特定的解释器(也称为带内存的脚本)。如果你能提供一个确切的例子,那么你在这里问我们会更成功
set grepprg=yourcommand
:grep <your arguments>
:help quickfix
:help :cnext
:help :lprevious
:help -q
:help -+c
:help :cwindow
:help :grep
:help 'grepprg'
:help 'grepformat'