有没有办法将 Vim 用作多行 grep?

问题描述 投票:0回答:1

有没有办法从 shell 脚本运行 Vim 并进入

stdout
匹配的模式?

例如,让我们搜索

function(x,y,z)
以及

function(
   x, y, z)

直接方法

vim -es -c ":g/function(\_.\{-})/p" -c ":q!" file.c
仅打印第一行。

如何打印整个图案?

vim
1个回答
1
投票

您可以向

:print
命令提供一个范围,例如当前行和右括号匹配的行:

vim -es -c"g/function(\_.\{-})/.,/)/p" -c"q!" file.c 

这里

.
是当前行(
:global
匹配的行),
/)/
)
匹配的行。小警告是我们在一场比赛中进行匹配,并且我们需要重复比赛的最后一个字符。

请参阅

:help :range
了解
/{pattern}/
范围。

© www.soinside.com 2019 - 2024. All rights reserved.