看板 Editor 關於我們 聯絡資訊
大家好, 我的文件裡面有很多名詞和形容詞, 舉例來說: 名詞有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