使用Vim處理文本

1. 使用Vim提取文本內(nèi)容

考慮以下場(chǎng)景:Vim教程網(wǎng)為了增加在百度上的收錄量,需要調(diào)用百度站長(zhǎng)平臺(tái)提供的主動(dòng)推送接口實(shí)時(shí)推送鏈接。為此,需要將準(zhǔn)備提交的鏈接按照每行一條的格式寫入一個(gè)文本文件中。

vim處理文本

而Vim教程網(wǎng)是有提供https://vimjc.com/sitemap.xml文件的,里面包含了教程網(wǎng)上所有的Vim教程文章,因此,只需要對(duì)sitemap.xml文件進(jìn)行必要的處理,提取出所有文章的url即可。

為了提取出sitemap.xml中的所有文章url,可以使用Vim進(jìn)行如下操作。

  • 首先,在Vim命令行模式下使用命令 :v/loc/d 刪除掉sitemap.xml文件中不包含 loc 的行
  • 其次,使用Vim搜索命令 /\v *\<\/?\w+\> 選中 <loc></loc> 標(biāo)記
  • 最后,使用Vim替換命令 :%s///g 刪除選中的loc標(biāo)記和空格
vim處理文本

:v/loc/d 命令是使用 :vglobal 命令的縮寫形式執(zhí)行與 :global 命令完全相反的操作,用于實(shí)現(xiàn)刪除所有不包含 loc 的行,更多內(nèi)容可以參考文章Vim global命令和重復(fù)操作。

/\v *\<\/?\w+\> 用Vim的very magic正則匹配模式依次匹配零個(gè)或任意個(gè)空格、再匹配左尖括號(hào) (<)、匹配可選的正斜杠 (/?)、匹配一個(gè)或多個(gè)單詞型字符 (\w+)、匹配右尖括號(hào) (>)。從而搜索出所有包含尖括號(hào)的目標(biāo)字符。

:%s///g 命令是使用Vim的替換命令 :s (全稱為 :substitute) 將源字符串串替換為目標(biāo)串(空格),由于substitute命令沒有顯式指定源串,所以substitute命令會(huì)沿用上次的查找模式 (即/\v *\<\/?\w+\>),更多內(nèi)容可以參考文章substitute重用上次的查找模式

2. 將 CSS 文件中所有規(guī)則的屬性按字母排序

假設(shè)我們想把某個(gè)CSS文件中每一組樣式規(guī)則內(nèi)的屬性都按照字母順序排序??梢越柚?Vim 的內(nèi)置命令 :sort 配合 :global 命令實(shí)現(xiàn)這一功能。

vim處理文本

:g/{/ .+1,/}/-1 sort 命令是使用 :global 命令在指定的文件范圍內(nèi)執(zhí)行 sort 命令。為了分析這個(gè)Vim命令的含義,將其拆分成以下幾個(gè)部分。

.+1,/}/-1 的基本形式為 .,/}/,其含義是 從當(dāng)前行開始,直到匹配到模式 /}/ 的那一行為止。偏移值 +1 與 —1 用于縮小操作范圍,把操作對(duì)象集中在 {} 之間的內(nèi)容上面。

/{/ 命令令會(huì)將光標(biāo)置于某個(gè) {} 塊的起始位置。

所以,參考Vim global命令格式可分析出,:g/{/ .+1,/}/-1 sort 命令指定的模式 { 會(huì)匹配每個(gè) {} 塊的起始行。而對(duì)于每個(gè)匹配行,:sort 會(huì)從匹配行到 {} 塊的結(jié)尾這個(gè)范圍內(nèi)執(zhí)行。

最終,每一條規(guī)則的 CSS 屬性都會(huì)按照字母順序排列整齊。


原文鏈接:使用Vim處理文本-Vim使用技巧(9)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容