作者qllvv (百事柠檬可乐儿)
看板Editor
标题[vim ] 希望能把搜寻结果存成log & 非贪婪寻找
时间Sun Oct 6 13:16:26 2019
大家好, 我的文件里面有很多名词和形容词, 举例来说:
名词有book, ball, car三种;
形容词有red, yellow两种,
我想要检查文件里是否所有的book, ball, car前面都有加到形容词
第一种方式是用计数的方式
:%s#book#book#g
:%s#red book#red book#g
:%s#yellow book#yellow book#g
检查book的数量是否等於red book+yellow book;
相同的话就表示每book前面都有加到形容词, 但事情不是想像中那麽简单.
我後来发现整篇文章有80个book, 只有20个red和55个是yello, 就是说掉了5个.
後来决定改用寻找的方式
/[^red|yellow] book
/[^red|yellow] ball
/[^red|yellow] car
然後用眼睛和手一个一个处理(汗)
第一个问题是想请问有没有办法可以直接把结果存成一个log档显示行数呢?
第二个问题是後来发现文件里有出现
a red
interesting book, 这样就会被误判没加到形容词, 於是我改搜寻
/[^red|yellow].*.book
因为vim预设是贪婪式的, 所以会误搜寻到下面的句子
we play a
red ball and read a book.
改用wiki介绍的非贪婪式寻找就再也找不到任何匹配了orz
/[^red|yellow].*?.book
请问这部分有办法避开吗? 谢谢.
--
◤◢███◣
◥█◤◢█◤
◢█◤◢█◤
◢ ◢█◤ █◣
▼◢█◤ █◣
◥██
██◤◥█
██
█◤ ██
█ ██ ██ ██ ██
██
█◤ █
◤◢█◤
◥ ◢█◤
◥ ██ ██ ██ ██
█◤◢█ ◥◣█ ██ ◢◣ ██ ◢◣ ◥█ ◢█◤ ◥█ ◢█◤◢██
█◣◥█◣ ██◢ ██ █◤ ██ █◤ █◣█◤◢◣ █◣█◤◢███
██◣◥██◤◥◤▲◥██◤◢◣◥██◤◢◣ ◥█◤◢█◤ ◥█◤◢████
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.43.146.214 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Editor/M.1570338990.A.116.html
1F:推 mjsg: 要用 vim 还是查 vim 本身的 help 比较准 10/06 13:49
2F:推 mjsg: 在 vim 中非贪婪的写法是 .\{-} 而不是.*? 10/06 14:05
3F:→ qllvv: 好我会试试「.\{-}」,那请问第一个问题有办法解决吗(?) 10/06 14:54
4F:→ qllvv: 像notepad++就可以把寻找的结果的log下来, 显示匹配的行数. 10/06 14:56
※ 编辑: qllvv (36.231.128.26 台湾), 10/06/2019 19:46:11
5F:推 mjsg: 使用 :vim 或 :grep 等内建/外部的 grep 工具,会搜寻到所有 10/06 22:36
6F:→ mjsg: 配对到的结果,并存在 error list 中。用 :cwindow 打开再 10/06 22:38
7F:→ mjsg: :w <另存档名> 存起来应该就可以了。不过我的话一开始就会直 10/06 22:38
8F:→ mjsg: 接使用 grep 或 rg 等工具来完成你的任务吧… 10/06 22:39
9F:推 mydemonic: 我自己会用vimgrep 和vimgrepadd搜寻,再用quickfix存 10/07 13:55
10F:→ mydemonic: 搜寻结果 10/07 13:55
11F:→ qllvv: 哦哦quickfix好像可行~~~我是在win环境下没外部grep可用QQ 10/08 00:25
12F:→ Bschord: 装Gnuwin32会有grep.exe 10/08 17:57