[vim ] 希望能把搜尋結果存成log & 非貪婪尋找

看板Editor (編輯器(vim/emacs))作者 (百事檸檬可樂兒)時間4年前 (2019/10/06 13:16), 4年前編輯推噓4(408)
留言12則, 4人參與, 4年前最新討論串1/1
大家好, 我的文件裡面有很多名詞和形容詞, 舉例來說: 名詞有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

10/06 13:49, 4年前 , 1F
要用 vim 還是查 vim 本身的 help 比較準
10/06 13:49, 1F

10/06 14:05, 4年前 , 2F
在 vim 中非貪婪的寫法是 .\{-} 而不是.*?
10/06 14:05, 2F

10/06 14:54, 4年前 , 3F
好我會試試「.\{-}」,那請問第一個問題有辦法解決嗎(?)
10/06 14:54, 3F

10/06 14:56, 4年前 , 4F
像notepad++就可以把尋找的結果的log下來, 顯示匹配的行數.
10/06 14:56, 4F
※ 編輯: qllvv (36.231.128.26 臺灣), 10/06/2019 19:46:11

10/06 22:36, 4年前 , 5F
使用 :vim 或 :grep 等內建/外部的 grep 工具,會搜尋到所有
10/06 22:36, 5F

10/06 22:38, 4年前 , 6F
配對到的結果,並存在 error list 中。用 :cwindow 打開再
10/06 22:38, 6F

10/06 22:38, 4年前 , 7F
:w <另存檔名> 存起來應該就可以了。不過我的話一開始就會直
10/06 22:38, 7F

10/06 22:39, 4年前 , 8F
接使用 grep 或 rg 等工具來完成你的任務吧…
10/06 22:39, 8F

10/07 13:55, 4年前 , 9F
我自己會用vimgrep 和vimgrepadd搜尋,再用quickfix存
10/07 13:55, 9F

10/07 13:55, 4年前 , 10F
搜尋結果
10/07 13:55, 10F

10/08 00:25, 4年前 , 11F
哦哦quickfix好像可行~~~我是在win環境下沒外部grep可用QQ
10/08 00:25, 11F

10/08 17:57, 4年前 , 12F
裝Gnuwin32會有grep.exe
10/08 17:57, 12F
文章代碼(AID): #1TcNYk4M (Editor)
文章代碼(AID): #1TcNYk4M (Editor)