在編輯verilog代碼時,特別在例化模塊時,端口較多時,手動編輯比較費事,一般用vi中的正則表達式比較方便,舉一最常用的例子,
將. clk改成. clk(clk),
命令為
:114 s/\.\(.*\)_*/\.\1(\1),/g
解釋
其中114為行數(shù);
s為字符替換符;
/為要替換的字符開始字符
\.匹配 . 字符;
\(\)為整體字符,包在它里面的所有字符可以作為一個整體,后面可以用\1代替,比如\(.*\)為所有字符串為一個整體;
.其中.代表匹配任意一個字符,代表匹配的數(shù)目為0到任意多個;
_此處代表一個空格,_*代表匹配任意多個空格,包括0個;
第二個/代表要替換成的字符開始字符;
\.同上;
\1匹配\(.*\)內(nèi)的.*;
()代表匹配的括號;
,代表匹配逗號;
/g表示全局替換。
其中匹配字符串,帶有下劃線和數(shù)字的字符串,但不包括空格,可以用\w*就可以匹配,其中. 代表匹配任何的字符包括空格

刪除空行的命令:
:n1,n2g/^_*$/d,其中n1和n2為行數(shù)