作者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://www.ptt.cc/bbs/Editor/M.1570338990.A.116.html
推 mjsg: 要用 vim 還是查 vim 本身的 help 比較準 10/06 13:49
推 mjsg: 在 vim 中非貪婪的寫法是 .\{-} 而不是.*? 10/06 14:05
→ qllvv: 好我會試試「.\{-}」,那請問第一個問題有辦法解決嗎(?) 10/06 14:54
→ qllvv: 像notepad++就可以把尋找的結果的log下來, 顯示匹配的行數. 10/06 14:56
※ 編輯: qllvv (36.231.128.26 臺灣), 10/06/2019 19:46:11
推 mjsg: 使用 :vim 或 :grep 等內建/外部的 grep 工具,會搜尋到所有 10/06 22:36
→ mjsg: 配對到的結果,並存在 error list 中。用 :cwindow 打開再 10/06 22:38
→ mjsg: :w <另存檔名> 存起來應該就可以了。不過我的話一開始就會直 10/06 22:38
→ mjsg: 接使用 grep 或 rg 等工具來完成你的任務吧… 10/06 22:39
推 mydemonic: 我自己會用vimgrep 和vimgrepadd搜尋,再用quickfix存 10/07 13:55
→ mydemonic: 搜尋結果 10/07 13:55
→ qllvv: 哦哦quickfix好像可行~~~我是在win環境下沒外部grep可用QQ 10/08 00:25
→ Bschord: 裝Gnuwin32會有grep.exe 10/08 17:57