1,使用tags
tag是什么? 一个位置. 记录了关于一个标识符在哪里被定义的信
息. 比如verilog代码中的一个module的定义. 这种tag聚集在一起被放入一
个tags文件. 这个文件可以让Vim能够从任何位置起跳达到tag所指示的位
置--标识符被定义的位置.
下面的命令可以为当前目录下(包括子目录下)的所有verilog程序文件生成对应的tags文件:
ctags -R . (这命令在shell下运行)
"ctags"是一个独立的程序. 绝大多数Unix系统上都会预装这个程序,
如果你的系统上还没有, 你可以在下面找到一个功能丰富的ctags:
http://ctags.sf.net
(下面的都是在vim中的命令)
现在你在Vim中要跳到一个module 名字叫做fifo_ctrl的定义就可以用下面的命令:
:tag fifo_ctrl
这个命令会带你到"fifo_ctrl"的定义处, 哪怕它是在另一个文
件中.
CTRL-]命令会取当前光标下的word作为tag的名字并直接跳转. 这使
得在大量代码中进行探索更容易一些. 假设你正看"fifo_top",
发现它调用了一个叫"fifo_ram"的module, 这个module是干什么的呢? 你可
以把光标置于"fifo_ram"上, 按下CTRL-]即可.
":tags"命令会列出现在你就已经到过哪些tag了:
现在往回走. CTRL-T命令会跳到你前一次的tag处. 在上例中它会
带你到调用了"fifo_ram"的"fifo_top"module的地方.
CTRL-T可以带一个命令记数, 以此作为往回跳的次数, 你已经向前跳
过了, 现在正在往回跳, 我们再往前跳一次. 下面的命令可以直接跳转
到当前tag序列的最后:
:tag
你也可以给它一个前辍, 让它向前跳指定的步长. 比如":3tag".
CTRL-T也可以带一个前辍.
这些命令可以让你向下深入一个函数调用树(使用CTRL-]), 也可以回
溯跳转(使用CTRL-T). 还可以随时用":tags"看你当前的跳转历史记录.
2 预览窗口
当你在写一个module调用时, 往往需要获知这个module的断口列表--查看
module的定义. tag所提供的机制正为此用. 最好是函数的定义可以显示在
另一窗口中以免影响当前的编辑. 这可以由预览窗口提供.
要打开一个预览窗口显示module"write_char"的定义使用命令:
:ptag write_char
Vim会打开一个窗口, 并将找到的"write char"函数的定义显示其中.
然后光标仍保持在你的当前编辑位置. 以便你无需以CTRL-W k窗口中切换
即可继续工作.
要关闭该预览窗口, 使用命令:
:pclose
