我想搜索以"abc"开头并以vim中的"xyz"结尾的字符串.
以下是我尝试过的命令:
:1,$g/abc[\w\W]*xyz/
:1,$g/abc\[\\w\\W\]\*xyz/
:1,$g/abc*xyz/
Run Code Online (Sandbox Code Playgroud)
"[\ w\W]*"表示"abc"和"xyz"之间的文本可以是任何字符
"1,$"表示搜索范围是由vim打开的文件中的第1行到最后一行.
我发现了搜索模式
abc[\w\W]*xyz
Run Code Online (Sandbox Code Playgroud)
为什么它在vim中失败?
rom*_*inl 25
除非"任何字符"对你来说意味着与Vim不同,否则下面的命令应该有效:
:g/abc.*xyz
Run Code Online (Sandbox Code Playgroud)
.
意思是"除了EOL之外的任何角色".*
表示"前一个原子的任何数字(包括0)".1,$
可以缩短为%
.:global
默认情况下,它可以在整个缓冲区上运行,因此您甚至不需要%
./
如果您没有按照:g/pattern
命令执行操作,则不需要关闭:g/foo/d
.一旦文件变得太大(比如 1GB),":g/abc.*xyz" 就会变得很慢。
我找到
cat fileName | grep abc | grep xyz >> searchResult.txt
Run Code Online (Sandbox Code Playgroud)
比在 vim 中使用搜索功能更有效。
我知道此方法可能会返回以“xyz”开头并以“abc”结尾的行。
但是由于这在我的文件中是很少见的情况(也许其他人不会经常发生这种情况),我想我应该在这里写这个方法。