先做乙個演示:
^^vjjjjjjjjjjyjjjjjjjjjjjp/adder/d /a/d /b/d /sum/d kkkkkkkkk
adder adder0
(
.rst(rst),
.clk(clk),
.a(a0),
.b(b0),
.sum(sum0)
);把上面的**複製到乙個檔案裡。在linux(windows下沒試過,因為鍵的對映不同,可能不對)下用vim開啟該檔案。
把游標移到第一行的任何位置,在normal模式下敲入
"ayy 把第一行的內容讀入register a
移動游標到adder那一行,在normal模式下敲入
50@a 把register a的內容重複執行50次
有興趣了嗎?
if (no), dzh.mop.com
else
在編寫verilog程式時,有大量相似的模組,比如:
adder adder0
(
.rst(rst),
.clk(clk),
.a(a0),
.b(b0),
.sum(sum0)
);adder adder1
(
.rst(rst),
.clk(clk),
.a(a1),
.b(b1),
.sum(sum1)
);。。。
假如相似的模組有50個該怎麼辦?500個呢?(哭去吧:)
通常的辦法是先寫好adder0,然後複製/貼上/修改,重複49次。這是乙個冗長、無趣且易出錯的過程。
如果你用的是vim,那麼通過錄製乙個簡單的巨集可以讓你的生活變的輕鬆愜意、充滿趣味和成就感,甚至當你在同事前炫耀時還能小小的虛榮一把! :-p
簡單的說,巨集是一串命令的集合,類似批處理的概念。
該巨集如下
qa^jjjjjjjjjjyjjjjjjjjjjjp/adder/d/a/d/b/d/sum/dkkkkkkkkkq
前提是先把游標移到adder0的那一行,進入normal模式,就是按幾下esc鍵。
看上去很複雜,是把?
下面逐項解釋:
q 巨集開始
a 巨集名
進入塊操作模式
jjjjjjjjjj 向下移動到模組結束
y 複製
jjjjjjjjjjj 向下移動到空白行
p 貼上
/adder/d 查詢後面帶數字的adder,會停在adder0這個word上
就是ctrl和a同時按。這個比較奇妙,它會把adder0變成adder1,具體的說就是+1,3就是+3。seems like magic? 就是-1。有一點不爽的是在win下不能這樣,因為被對映為全選了,網上有處理這個的方法,基本上就是不載入win的鍵盤對映。google一下就可以了。
/a/d
/b/d
/sum/d
kkkkkkkk 回到adder那一行
q 巨集結束
其實操作一下就會發現就是一些簡單操作的集合。然後在normal模式下敲49@a,魔術就會發生,你要的**會自動出現在螢幕上。
這大概是最初級的用程式寫程式吧(programming by programming?),不禁讓人浮想聯翩,假如機器真的會寫程式了世界會是什麼樣子?我們失業了?被matrix了?or幸福地生活下去...
enjoy!
VIM高效編輯
雖然從很久前就開始用 vim 了,但一直都是半調吊子,翻來覆去只用自己會的命令。最近為了提高書寫 的效率,還有 coding 時候的樂趣,又重新鑽研了一下 vim,發現了一篇很好的 vim 入門的文章,原文是英文版的,我覺得非常適合 vim 使用入門,所以翻譯了過來。這裡是簡單的介紹了 vim 的操...
高效率編輯器 VIM,非常適合 VIM 新手
雖然從很久前就開始用 vim 了,但一直都是半 調 吊子,翻來覆去只用自己會的命令。最近為了提高書寫 的效率,還有 coding 時候的樂趣,又重新鑽研了一下 vim,發現了一篇很好的 vim 入門的文章,原文是英文版的,我覺得非常適合 vim 使用入門,所以翻譯了過來。這裡是簡單的介紹了 vim ...
vim高效使用
第二級 感覺良好 各種插入模式 簡單的移動游標 拷貝 貼上 undo redo 開啟 儲存 退出 改變檔案 buffer 花點時間熟悉一下上面的命令,一旦你掌握他們了,你就幾乎可以幹其它編輯器都能幹的事了。但是到現在為止,你還是覺得使用vim還是有點笨拙,不過沒關係,你可以高階到第 了。第 更好 更...