vim替換技巧4

php

轉自:http://www.confay.com/2008/03/vim4.htmlhtml

[技巧一]
第一個是在VIM郵件列表中看到的,給出了一個如何統計文章字數的方法。
統計一個完整文件的字數,能夠使用Unix下的wc工具,它可以統計一個文件的行數、單詞數和字符數。
若是隻想統計一個特定的模式出現的次數,wc工具就無能爲力了,這時候能夠用VIM替換功能。
假定想統計文章中出現的單詞的數目,能夠使用下面的命令:
:%s/\w//gn
簡單解釋一下,這種命令其實是報告整個文件中出現的單詞的數目,命令分解以下:
%s 在整個文件中替換 (:help :s )
\w 匹配一個字 (word) (:help /\w )
g 替換行內全部出現的匹配 (:help :s_flags)
n 只報告匹配的數目,並不真正進行替換(:help :s_flags)
若是是使用LaTeX寫論文的話,能夠用這種方式排除LaTeX的控制字符,統計出論文中的實際字數,參考文檔列出的郵件中給出了這樣的一個示例。
VIM中「:help count-items」以及「:help count-bytes」,能夠看到更多統計數目的方法。

[技巧二]
這個技巧是在水木社區的VIM版看到的(http://www.newsmth.org/bbsdoc.php?board=VIM )。
這個文章是關於如何將一串十進制數字轉換爲16進制數字,使用VIM完成轉換的最簡單方法以下:
:%s/\d\+/\=printf("%X", submatch(0))/g
這條命令的原理是,把一串數字,用printf()函數的輸出替換掉,printf()函數輸出的正是這串數字的16進制形式。
分解以下:
%s 在整個文件中替換 (:help :s )
\d\+ 匹配一個或多個數字 (:help /\d :help /\+ )
\= 使用表達式的結果進行替換 (:help /\w )
printf 按指定格式輸出 (:help printf() )
submatch() 返回:s命令中的指定匹配字符串 (:help submatch() )
g 替換行內全部出現的匹配 (:help :s_flags)vim

相關文章
相關標籤/搜索