首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

Practical Vim Tip 98:用 :global 和 :delete 快速篩選文件行

     編輯:關於C++

核心命令

  • :global/{pattern}/delete — 刪除所有匹配行
  • :vglobal/{pattern}/delete(縮寫 :v/{pattern}/d)— 刪除所有不匹配行

場景一:只保留 HTML 標籤內容

文件中每行要么是標籤(如 <a>、</a>),要么是標籤內容。想刪除所有標籤行,只留內容。

/\v\<\/?\w+\>   " 先用 very magic 模式搜尋標籤
:g//d            " 刪除所有匹配當前搜尋模式的行

正則解析:\v 開啟 very magic;\< 匹配 <;\/? 可選的 /;\w+ 單詞字符;\> 匹配 >。

執行後文件僅剩:

Show invisibles
Tabs and Spaces
Whitespace preferences and filetypes

場景二:只保留包含 href 的行(如提取鏈接)

:v/href/d

含義:刪除所有不包含 "href" 的行。結果只剩帶鏈接的行。

技巧總結

  1. :g 作用於匹配行,:v 作用於不匹配行。
  2. 配合正則的 \v 模式減少轉義,寫法更直觀。
  3. 先用搜尋 /pattern 確認匹配效果,再執行 :g//d(空模式復用上次搜尋)。
  4. 大文件操作前建議 :set undolevels=10000 以防誤刪無法撤銷。

擴展應用

  • :g/^$/d — 刪除所有空行
  • :g/^\\s*$/d — 刪除空白行(含空格/製表符)
  • :g/^\\s*#/d — 刪除註釋行
  • :v/^\\s*$/d — 只保留非空行

心得

:global 是 Vim 中批量處理行的利器,配合正則表達式能完成「保留/刪除特定模式行」的所有需求,比宏錄製更聲明式、更高效。掌握 :g/:v + delete/yank/move 組合,文本篩選效率將質變。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved