題 如何刪除Vim中不包含某個單詞的所有行?


在vim中,我可以刪除包含單詞“price”的所有行

:g /price/d

如何刪除所有不包含“價格”一詞的行?


90
2018-03-31 23:00


起源


可以將此問題遷移到 vi.stackexchange.com?我試圖將其標記為遷移,但無法弄明白。 - Mu Mind
@MuMind這是關於主題的,所以 無需遷移。 “不要為了遷移而遷移。 我們只遷移問題,因為它們是 在原始網站上偏離主題。一個問題完全可以在多個站點上進行主題,但這不是將其遷移到其他地方的原因,除非OP請求遷移。“此外,只有SE員工可以在60天后遷移,而且他們很少見到將(甚至主持人都不能遷移舊問題)。 - 8bittree


答案:


您可以使用

:%g!/price/d

刪除不包含“價格”的每一行


127
2018-03-31 23:09



我知道這很容易...... - digitaljoel
:g! 也被稱為 :v (類似於 grep -v)。 - Chris Johnsen
什麼是 % 做? - hippietrail
% 在此上下文中是一個特殊範圍,表示整個文件。看到 :help cmdline-ranges。 - Heptite


您還可以使用:

:v/price/d

刪除行。


13
2017-10-07 08:03





%!grep "price"

是另一種選擇,可以比...快得多 :v 對於大文件。

在Vim 7.4,Ubuntu 14.04,1M行日誌文件上測試。

包含單詞的行: https://stackoverflow.com/questions/1725265/how-can-i-delete-all-lines-that-do-not-begin-with-certain-characters/42714334#42714334


3
2018-03-10 09:02